Thanks Dave! I just verified that from System.map. Between __early_initcall_end and __initcall_end, there is list of init calls with levels from 0-7. What is significance of these levels. Thanks, Rahul On Tue, Jan 8, 2013 at 7:01 PM, Dave Hylands <dhylands@gmail.com> wrote:
Hi,
On Tue, Jan 8, 2013 at 11:08 AM, Rahul Bedarkar <rpal143@gmail.com> wrote:
Ok. in init/main.c we call do_basic_setup(). Where do_initcalls call
each of init functions from __early_initcall_end to __initcall_end. But I don't know from where these values gets initialized.
If you look here: http://lxr.linux.no/#linux+v3.7.1/include/linux/init.h#L279<http://lxr.linux.no/#linux+v3.7.1/include/linux/init.h%23L279>
module_init is mapped to __initcall, which is in turn mapped to device_initcall, which sets up a pointer in a section called .initcall6.init
If you then look in the kernel linker script: http://lxr.linux.no/#linux+v3.7.1/arch/arm/kernel/vmlinux.lds.S#L175<http://lxr.linux.no/#linux+v3.7.1/arch/arm/kernel/vmlinux.lds.S%23L175>
INIT_CALLS is defined here: http://lxr.linux.no/#linux+v3.7.1/include/asm-generic/vmlinux.lds.h#L633<http://lxr.linux.no/#linux+v3.7.1/include/asm-generic/vmlinux.lds.h%23L633>
and it defines the __initcall_start and __initcall_end symbols.
Dave Hylands