grub_err_t grub_multiboot_init_mbi (int argc, char *argv[]) { grub_ssize_t len = 0; grub_multiboot_free_mbi (); len = grub_loader_cmdline_size (argc, argv); cmdline = grub_malloc (len); if (! cmdline) return grub_errno; cmdline_size = len; grub_create_loader_cmdline (argc, argv, cmdline, cmdline_size); return GRUB_ERR_NONE; }
grub_err_t grub_multiboot_add_module (grub_addr_t start, grub_size_t size, int argc, char *argv[]) { struct module *newmod; grub_size_t len = 0; newmod = grub_malloc (sizeof (*newmod)); if (!newmod) return grub_errno; newmod->start = start; newmod->size = size; newmod->next = 0; len = grub_loader_cmdline_size (argc, argv); newmod->cmdline = grub_malloc (len); if (! newmod->cmdline) { grub_free (newmod); return grub_errno; } newmod->cmdline_size = len; total_modcmd += ALIGN_UP (len, 4); grub_create_loader_cmdline (argc, argv, newmod->cmdline, newmod->cmdline_size); if (modules_last) modules_last->next = newmod; else modules = newmod; modules_last = newmod; modcnt++; return GRUB_ERR_NONE; }