Hello,
I am a beginner of kernel module programming. I want to
specify the order of calling functions that I registered
by EXPORT_SYMBOL(). (or modules)
Thank you for your help.
--
Seongsu Lee - http://www.senux.com/
Buck-passing usually turns out to be a boomerang.
On Thu, 28 Sep 2006 19:17:24 +0900, Seongsu Lee said:
> I am a beginner of kernel module programming. I want to
> specify the order of calling functions that I registered
> by EXPORT_SYMBOL(). (or modules)
What problem did you expect to solve by specifying the order? Phrased
differently, why does the order matter?
On Thu, Sep 28, 2006 at 11:47:02AM -0400, [email protected] wrote:
> On Thu, 28 Sep 2006 19:17:24 +0900, Seongsu Lee said:
> > I am a beginner of kernel module programming. I want to
> > specify the order of calling functions that I registered
> > by EXPORT_SYMBOL(). (or modules)
>
> What problem did you expect to solve by specifying the order? Phrased
> differently, why does the order matter?
I am playing with mtdconcat in MTD (Memory Technology Device).
For example:
mtdconcat must be called after initializing the lower device and
partitions. So, the order of calling functions must be decided
always.
Actuall, the functions in Linux kernel are called in a order. I want
to know how to specify these orders.
Sorry for short English. Thank you for your help.
--
Seongsu Lee - http://www.senux.com/
"I don't think so," said Ren'e Descartes. Just then,
he vanished.
On Sat, 30 Sep 2006 19:42:05 +0900 Seongsu Lee wrote:
> On Thu, Sep 28, 2006 at 11:47:02AM -0400, [email protected] wrote:
> > On Thu, 28 Sep 2006 19:17:24 +0900, Seongsu Lee said:
> > > I am a beginner of kernel module programming. I want to
> > > specify the order of calling functions that I registered
> > > by EXPORT_SYMBOL(). (or modules)
> >
> > What problem did you expect to solve by specifying the order? Phrased
> > differently, why does the order matter?
>
> I am playing with mtdconcat in MTD (Memory Technology Device).
>
> For example:
> mtdconcat must be called after initializing the lower device and
> partitions. So, the order of calling functions must be decided
> always.
>
> Actuall, the functions in Linux kernel are called in a order. I want
> to know how to specify these orders.
>
> Sorry for short English. Thank you for your help.
a. linker order matters (order in Makefiles)
b. initcall order matters. See include/linux/init.h, especially
this part:
/* initcalls are now grouped by functionality into separate
* subsections. Ordering inside the subsections is determined
* by link order.
* For backwards compatibility, initcall() puts the call in
* the device init subsection.
*/
#define __define_initcall(level,fn) \
static initcall_t __initcall_##fn __attribute_used__ \
__attribute__((__section__(".initcall" level ".init"))) = fn
#define core_initcall(fn) __define_initcall("1",fn)
#define postcore_initcall(fn) __define_initcall("2",fn)
#define arch_initcall(fn) __define_initcall("3",fn)
#define subsys_initcall(fn) __define_initcall("4",fn)
#define fs_initcall(fn) __define_initcall("5",fn)
#define device_initcall(fn) __define_initcall("6",fn)
#define late_initcall(fn) __define_initcall("7",fn)
c. "function call" order matters :)
---
~Randy
Hello,
Thank you for the replys.
I try to phrase differently.
I made a simple kernel module that do 'hello world'. The module will be
called when I do 'modprobe' or 'insmod' to load it into the memory.
When is the function, init_module(), in the module called in the case
the module is compiled as a built-in one? (Not M but Y in .config)
Can I specify the exact time of calling the function, init_module() in
the module?
--
Seongsu Lee - http://www.senux.com/
The nice thing about Windows is - It does not just
crash, it displays a dialog box and lets you press
'OK' first. (Arno Schaefer's .sig)
On Sat, 7 Oct 2006 23:41:39 +0900 Seongsu Lee wrote:
> Hello,
>
> Thank you for the replys.
>
> I try to phrase differently.
>
> I made a simple kernel module that do 'hello world'. The module will be
> called when I do 'modprobe' or 'insmod' to load it into the memory.
>
> When is the function, init_module(), in the module called in the case
> the module is compiled as a built-in one? (Not M but Y in .config)
> Can I specify the exact time of calling the function, init_module() in
> the module?
That depends on the order that it is listed in the (nested)
Makefiles. Which sub-directory and Makefile will you use?
---
~Randy
On Sat, Oct 07, 2006 at 08:27:52AM -0700, Randy Dunlap wrote:
> On Sat, 7 Oct 2006 23:41:39 +0900 Seongsu Lee wrote:
>
> > Hello,
> >
> > Thank you for the replys.
> >
> > I try to phrase differently.
> >
> > I made a simple kernel module that do 'hello world'. The module will be
> > called when I do 'modprobe' or 'insmod' to load it into the memory.
> >
> > When is the function, init_module(), in the module called in the case
> > the module is compiled as a built-in one? (Not M but Y in .config)
> > Can I specify the exact time of calling the function, init_module() in
> > the module?
>
> That depends on the order that it is listed in the (nested)
> Makefiles. Which sub-directory and Makefile will you use?
drivers/mtd/Makefile
Yes, I confirmed that the order of being called is same with
the order that is listed in the Makefiles.
I think it is better to post questions of kernel newbie like this
into other mailing lists instead of this, developer list.
Anyway, thank you very much for your help.
--
Seongsu Lee - http://www.senux.com/
Your job is being a professor and researcher: That's
one hell of a good excuse for some of the
brain-damages of minix. (Linus Torvalds to Andrew
Tanenbaum)