Hi,
How about following (may not be syntaxically correct):
In kernel:
/* Variable holding pointer to preboot hook function. */
preboot_hook:
.long 0
...
/* Check if there is preboot hook installed. */
movl preboot_hook, %eax
testl %eax, %eax
jne 1f
call %eax
1:
/* Continue boot. */
Then in module code:
void grub_preboot_hook_handler(void)
{
/* Process list of registered preboot hooks. */
}
void grub_preboot_register_hook(...);
void grub_preboot_unregister_hook(...);
GRUB_MOD_INIT(preboot)
{
preboot_hook = grub_preboot_hook_handler;
}
GRUB_MOD_FINI(preboot)
{
preboot_hook = 0;
}
If preboot.mod gets loaded then it goes and registers preboot handler to
kernel to do its tricks. Other modules then would use preboot.mod to
register their own handlers.
This would have minimal impact for kernel.
Thanks,
Vesa Jääskeläinen
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel