Hi dear Litmus RT developers,<div><br></div><div>Question Summary:</div><div>I tried to build Litmus RT following this tutorial</div><div><a href="https://wiki.litmus-rt.org/litmus/InstallationInstructions">https://wiki.litmus-rt.org/litmus/InstallationInstructions</a></div>
<div><br></div><div> I encountered an compiling error after typing, I found a hack to get around it and built the kernel successfully. However, I would like to know the standard way to do it.</div><div><br></div><div><br>
</div><div><br></div><div>Here is the detail:</div><div><br></div><div>At the stage of </div><div>$ make bzImage</div><div><br></div><div>I got this error</div><div><div>litmus/sched_plugin.c:85:4: error: implicit declaration of function ‘request_exit_np_atomic’ [-Werror=implicit-function-declaration]</div>
<div>cc1: some warnings being treated as errors</div></div><div><br></div><div>So I search where this function is declared</div><div>$ grep -r "request_exit_np_atomic" *</div><div><br></div><div>and found</div><div>
include/litmus/litmus.h:inline int request_exit_np_atomic(struct task_struct *t)</div><div><br></div><div>then I discovered that this declaration in litmus.h is inside </div><div>#ifdef CONFIG_NP_SECTION</div><div>...</div>
<div>#else</div><div>...</div><div><br></div><div>and I search for CONFIG_NP_SECTION and found it is not defined anywhere, so the function 'request_exit_np_atomic' is never declared. </div><div><br></div><div>then I added </div>
<div>#define CONFIG_NP_SECTION</div><div>before </div><div>#include <litmus/litmus.h> in sched_plugin.c</div><div><br></div><div>Then I got another error.</div><div><div>include/litmus/litmus.h: In function ‘is_kernel_np’:</div>
<div>include/litmus/litmus.h:135:18: error: ‘struct rt_param’ has no member named ‘kernel_np’</div><div>include/litmus/litmus.h: In function ‘make_np’:</div><div>include/litmus/litmus.h:157:11: error: ‘struct rt_param’ has no member named ‘kernel_np’</div>
<div>include/litmus/litmus.h: In function ‘take_np’:</div><div>include/litmus/litmus.h:165:20: error: ‘struct rt_param’ has no member named ‘kernel_np’</div><div>In file included from litmus/sched_plugin.c:16:0:</div><div>
include/litmus/sched_plugin.h: At top level:</div><div>include/litmus/sched_plugin.h:59:6: warning: ‘struct litmus_lock’ declared inside parameter list [enabled by default]</div><div>include/litmus/sched_plugin.h:59:6: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]</div>
<div>litmus/sched_plugin.c: In function ‘is_kernel_np’:</div><div>include/litmus/litmus.h:136:1: warning: control reaches end of non-void function [-Wreturn-type]</div><div>make[1]: *** [litmus/sched_plugin.o] Error 1</div>
<div>make: *** [litmus] Error 2</div></div><div><br></div><div>And here is my hack to get around. I copied the whole function of 'request_exit_np' to the beginning of sched_plugin.c, and this time it builds the whole kernel successfully.</div>
<div><br></div><div>I am wondering if there is anything else I need to configure that the tutorial doesn't mention to make this go in a standard way?</div><div><br></div><div><br></div><div>Thanks!</div><div>Alfred</div>
<div><br></div>