Le Mon, 25 Feb 2008 09:03:12 -0800, Matt Mackall <[EMAIL PROTECTED]> a écrit :
> > > This is not quite what Peter and I were thinking of, I think. > > > It's not at all generic. How about a section that simply contains > > > a set of function pointers, a macro to add things to that > > > section, and a function that calls all the pointers in that > > > section. Eg: > > > > > > CALLBACK_SECTION(init_cpu_amd, "cpuvendor.init"); > > > invoke_callback_section("cpuvendor.init"); > > > > > > ..which would give us a generic facility we could use in various > > > places. > > > > I see. Probably doable. How would it work in the LD script file ? > > Your mechanism allows to specify any section name, but AFAIK, the > > sections must be explicitly listed in the kernel LD script in order > > to be included in the final kernel image. Am I missing something ? > > I can't see any way to avoid it, but we can leave it to future > generations to come up with something more clever. After a quick look at the LD documentation, it seems that wildcards are supported in the input section names of the linker script. So that the CALLBACK_SECTION() macro could add the function pointer to a section named: gcm. ## name (gcm standing for "generic callback mechanism") and then, in the linker script, do: *(gcm.*) I'm going to try that. Sincerly, Thomas -- Thomas Petazzoni, Free Electrons Free Embedded Linux Training Materials on http://free-electrons.com/training (More than 1500 pages!)
signature.asc
Description: PGP signature