New command `nativedisk'.
This commit is contained in:
parent
02adbb932d
commit
7cd0df84f1
7 changed files with 316 additions and 29 deletions
|
@ -51,6 +51,7 @@ grub_dl_t grub_dl_head = 0;
|
|||
grub_err_t
|
||||
grub_dl_add (grub_dl_t mod);
|
||||
|
||||
/* Keep global so that GDB scripts work. */
|
||||
grub_err_t
|
||||
grub_dl_add (grub_dl_t mod)
|
||||
{
|
||||
|
@ -58,9 +59,6 @@ grub_dl_add (grub_dl_t mod)
|
|||
return grub_error (GRUB_ERR_BAD_MODULE,
|
||||
"`%s' is already loaded", mod->name);
|
||||
|
||||
mod->next = grub_dl_head;
|
||||
grub_dl_head = mod;
|
||||
|
||||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
|
@ -77,18 +75,6 @@ grub_dl_remove (grub_dl_t mod)
|
|||
}
|
||||
}
|
||||
|
||||
grub_dl_t
|
||||
grub_dl_get (const char *name)
|
||||
{
|
||||
grub_dl_t l;
|
||||
|
||||
for (l = grub_dl_head; l; l = l->next)
|
||||
if (grub_strcmp (name, l->name) == 0)
|
||||
return l;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
struct grub_symbol
|
||||
|
@ -447,13 +433,6 @@ grub_dl_resolve_symbols (grub_dl_t mod, Elf_Ehdr *e)
|
|||
return GRUB_ERR_NONE;
|
||||
}
|
||||
|
||||
static void
|
||||
grub_dl_call_init (grub_dl_t mod)
|
||||
{
|
||||
if (mod->init)
|
||||
(mod->init) (mod);
|
||||
}
|
||||
|
||||
/* Me, Vladimir Serbinenko, hereby I add this module check as per new
|
||||
GNU module policy. Note that this license check is informative only.
|
||||
Modules have to be licensed under GPLv3 or GPLv3+ (optionally
|
||||
|
@ -595,7 +574,7 @@ grub_dl_flush_cache (grub_dl_t mod)
|
|||
|
||||
/* Load a module from core memory. */
|
||||
grub_dl_t
|
||||
grub_dl_load_core (void *addr, grub_size_t size)
|
||||
grub_dl_load_core_noinit (void *addr, grub_size_t size)
|
||||
{
|
||||
Elf_Ehdr *e;
|
||||
grub_dl_t mod;
|
||||
|
@ -651,10 +630,6 @@ grub_dl_load_core (void *addr, grub_size_t size)
|
|||
grub_dprintf ("modules", "module name: %s\n", mod->name);
|
||||
grub_dprintf ("modules", "init function: %p\n", mod->init);
|
||||
|
||||
grub_boot_time ("Initing module %s", mod->name);
|
||||
grub_dl_call_init (mod);
|
||||
grub_boot_time ("Module %s inited", mod->name);
|
||||
|
||||
if (grub_dl_add (mod))
|
||||
{
|
||||
grub_dl_unload (mod);
|
||||
|
@ -664,6 +639,23 @@ grub_dl_load_core (void *addr, grub_size_t size)
|
|||
return mod;
|
||||
}
|
||||
|
||||
grub_dl_t
|
||||
grub_dl_load_core (void *addr, grub_size_t size)
|
||||
{
|
||||
grub_dl_t mod;
|
||||
|
||||
mod = grub_dl_load_core_noinit (addr, size);
|
||||
|
||||
if (!mod)
|
||||
return NULL;
|
||||
|
||||
grub_boot_time ("Initing module %s", mod->name);
|
||||
grub_dl_init (mod);
|
||||
grub_boot_time ("Module %s inited", mod->name);
|
||||
|
||||
return mod;
|
||||
}
|
||||
|
||||
/* Load a module from the file FILENAME. */
|
||||
grub_dl_t
|
||||
grub_dl_load_file (const char *filename)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue