Messages in this thread | | | Date | Thu, 13 Mar 2008 18:09:12 -0400 (EDT) | From | "Robert P. J. Day" <> | Subject | whose job is it to include various header files? |
| |
more a philosophy question than anything but, while poking around the percpu stuff today, i noticed in the header file linux/percpu.h the opening snippet:
#include <linux/preempt.h> #include <linux/slab.h> /* For kmalloc() */ #include <linux/smp.h> #include <linux/string.h> /* For memset() */ #include <linux/cpumask.h> ...
hmmm, i thought to myself (because that's how i refer to myself), i wonder why this header file is including headers for kmalloc() and memset() when this header file makes no reference to those routines. let's see what happens if i remove them and:
$ make distclean $ make defconfig [x86] $ make
... chug chug chug ...
CC arch/x86/kernel/nmi_32.o arch/x86/kernel/nmi_32.c: In function ‘check_nmi_watchdog’: arch/x86/kernel/nmi_32.c:81: error: implicit declaration of function ‘kmalloc’ arch/x86/kernel/nmi_32.c:81: error: ‘GFP_KERNEL’ undeclared (first use in this function) arch/x86/kernel/nmi_32.c:81: error: (Each undeclared identifier is reported only once arch/x86/kernel/nmi_32.c:81: error: for each function it appears in.) arch/x86/kernel/nmi_32.c:81: warning: assignment makes pointer from integer without a cast arch/x86/kernel/nmi_32.c:118: error: implicit declaration of function ‘kfree’ make[1]: *** [arch/x86/kernel/nmi_32.o] Error 1 make: *** [arch/x86/kernel] Error 2 $
ok, now i know. but that means, of course, that nmi_32.c is invoking kmalloc() without ever having included the necessary header file for it -- it's just inheriting that from linux/percpu.h.
doesn't that (sort of) violate the kernel coding style? if a file somewhere needs the contents of some header file, isn't it that file's responsibility to explicitly include it, and not quietly realize it's getting it from elsewhere?
rday --
======================================================================== Robert P. J. Day Linux Consulting, Training and Annoying Kernel Pedantry: Have classroom, will lecture.
http://crashcourse.ca Waterloo, Ontario, CANADA ========================================================================
| |