Messages in this thread | | | Date | Wed, 15 Feb 2012 10:52:45 +0400 | From | Cyrill Gorcunov <> | Subject | Re: [patch 2/4] syscalls, x86: Add __NR_kcmp syscall v8 |
| |
On Tue, Feb 14, 2012 at 03:13:12PM -0800, Andrew Morton wrote: ... > > hm, what does all this stuff in the selftest makefile do? > > The selftests code has undergone some changes since you last looked.
Hmm, thanks for pointing.
> The rules are, roughly: > > - In tools/testing/selftests, a "make" will compile but not run all > selftest code. > > - In tools/testing/selftests, a "make run_tests" will compile all > selftest code (if needed) and will then run all the tests. > > If a test is not applicable (eg wrong architecture, kernel feature > not enabled, etc) then it should try to avoid breaking the build and, > when executed it should emit a diagnostic and then exit(0) (ie: > success) so as to avoid breaking the overall test run. > > IOW, the test should only fail if the feature is present but isn't > working correctly. > > Also, I hate with a passion Makefiles which hide the command lines from > me! So I nuked all that E and Q stuff. >
make V=1 will show the command line, I tried to make the output to look the same as in case of building kernel.
> > However that didn't work for me: > > akpm:/usr/src/25/tools/testing/selftests/kcmp> make > gcc -DCONFIG_X86_64 -D__x86_64__ -I../../../../arch/x86/include/generated/ ... > kcmp_test.c: In function 'sys_kcmp': > kcmp_test.c:22: error: '__NR_kcmp' undeclared (first use in this function) ... > How are we supposed to be picking up __NR_kcmp? >
Initially I made it to look into arch/x86 directory and find __NR_kcmp definition there but then I realised (and someone pointed me as well) that headers should be taken from those which are generated by kernel, ie the result of 'make headers_install'. So if you run make headers_install then the test program should work. If this is wrong, I can fix it and make a patch on top.
Ie instead of
+#include <linux/unistd.h>
there will be
+#ifdef CONFIG_X86_64 +#include <asm/unistd_64.h> +#else +#include <asm/unistd_32.h> +#endif
Cyrill
| |