On 2/22/06, Rajaram Suryanarayanan <rajaram_linux@xxxxxxxxx> wrote: > > Fawad Lateef <fawadlateef@xxxxxxxxx> wrote: > On 2/18/06, Rajaram Suryanarayanan wrote: > > > > I often see that some kernel subcomponents cannot be compiled as a module > > in "make xconfig". They can only be compiled statically or never. > > So I want to understand what is the criteria for this ? What are the > things > > that can make a set of kernel code never suitable for compiling it as a > > module ? > > > > I think this happens only for those modules which must be required by > the kernel and can't be compiled as loadable module __and__ most of > the options actually not for compiling some code rather those symbols > are required with-in the module/code going to be compile. As you can > compile almost all drivers as module (also IO Scheduler etc) but if > they required any symbol (with-in their code) then it won't be > selected as M because they are not used for module compiling rather > they are internal #ifdef for that module. > > I hope this will clear your doubts ... > > > Thanks for your reply. > But I am not able to understand your reply. Could you please be more clear > ? > ok, I will try to explain more clearly. Static compilation is required for code which are required for basic kernel functionalities and most of the options (which can be selected as Y/N not as M) are the conditional compilation symbols which allows to add some extra features in the kernel like in "General setup" all the options must be selected as Y or N but not M as they are for the conditional compilation not for some module code. For example in "general setup" selecting swap actually defines CONFIG_SWAP as 1 so the kernel compilation will include code realted to that SWAP option Beside these (conditional compilation) kind of options all __other__ options can be selected as M like in "Block layer", support for large block devices must be selected as Y because it defines support of large block devices in kernel (as it sets sector_t to u64) but the "IO Schedulers" can be selected as M because they are in different code files and contains loadable module support (obviously they are not conditional compilation options) I hope now it I am able to make it little more clear :) -- Fawad Lateef -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/