Re: __KERNEL__ and __MODULE__

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Daniel Rodrick un jour écrivit:
Hi,

I find a lot of code buried within #ifdefs for the following variables:

MODULE / __MODULE__
KERNEL / __KERNEL__

1) AFAIK, the MODULE / __MODULE__ is defined when my drievr is
selected to be compiled as a module, and the KERNEL / __KERNEL__ is
defined when is is selected to be built in the kernel image. Is this
right?

No. The __KERNEL__ macro is defined because there is programs (like libraries) than include kernel code and there is many things that you don't want them to include. So most modules will want the __KERNEL__ macro to be enabled. It is usually done by passing -D__KERNEL__ to gcc.

2) Why two variants ? KERNEL V/s __KERNEL__ and MODULE v/s __MODULE__?

AFAIK, there is only MODULE and __KERNEL__. I don't think that __MODULE__ or KERNEL exist. I greped the 2.6.17 kernel just to be sure, and didn't found any instance of them.

3) Do I need to define these symbols in my Makefile myself or the
Kernel Makefiles / Kbuild does it for me?

  Use the source, Luke!  There is plenty of examples there and on the web.

I would suggest that for now, you only make dynamicaly loadable modules and compile it from outside the kernel tree. So you will be sure not to introduce problems in your kernel (and loose time finding out what).

So for starting, you will probably want to add -D__KERNEL__ directly to gcc and define MODULE inside of your module for simplicity. When you will know a bit more about kernel programming, you may try to include your code directly in the kernel tree.

I never used kbuild, so I cannot fairly comment on it. Still, I strongly recommand you to buy a copy of Linux Device Drivers from O'Reilly and maybe some others books like Robert Love's Linux Kernel Development. That will answer many of your questions and then you will be able to get much more from this mailing list.

Simon Valiquette
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

[Index of Archives]     [Audio]     [Hams]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Fedora Users]

  Powered by Linux