Hello. In this case we can transfer the whole functionality located in kern/loader.c to a dedicated module boot.mod. This module will also register "boot" command. In this way the encapsulation won't be broken and kernel will become even smaller. Vladimir 'phcoder' Serbinenko Vesa Jääskeläinen wrote: > 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 > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel