I have experimented with using the gcc constructor extensions. The C
ones, that is, not the asm "do at startup" .ctors stuff.
init_module() { ....
foo = kmalloc(lots...);
__memcpy(foo,(FOO[]){ // use of constructor expression
...
{ 3, "holidays" },
...
},
many);
...
use(foo);
kfree(foo); // want to get rid of foo now!!!
and to my surprise this doesn't oops. I thought this would allocate
the temporary structure from the stack? Either it is so, and I am about
to crash (the array is about 10K), or gcc has made a kmalloc/kfree
call ... or it has allocated the temporary data as a static constant.
That seems likely as I see no change in the footprint of the module
code when loaded. Is only the max size returned by lsmod?
Peter
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/