Exemplo n.º 1
0
/* Register a configuration table either supplying the address directly
   or with a hook
*/
grub_err_t
grub_efiemu_register_configuration_table (grub_efi_guid_t guid,
					  void * (*get_table) (void *data),
					  void (*unload) (void *data),
					  void *data)
{
  struct grub_efiemu_configuration_table *tbl;
  grub_err_t err;

 err = grub_efiemu_unregister_configuration_table (guid);
  if (err)
    return err;

  tbl = (struct grub_efiemu_configuration_table *) grub_malloc (sizeof (*tbl));
  if (! tbl)
    return grub_errno;

  tbl->guid = guid;
  tbl->get_table = get_table;
  tbl->unload = unload;
  tbl->data = data;
  tbl->next = efiemu_config_tables;
  efiemu_config_tables = tbl;

  return GRUB_ERR_NONE;
}
Exemplo n.º 2
0
/* Register a configuration table either supplying the address directly
   or with a hook
*/
grub_err_t
grub_efiemu_register_configuration_table (grub_efi_guid_t guid,
					  void * (*get_table) (void *data),
					  void (*unload) (void *data),
					  void *data)
{
  struct grub_efiemu_configuration_table *tbl;
  grub_err_t err;

 if (! get_table && ! data)
    return grub_error (GRUB_ERR_BAD_ARGUMENT,
		       "you must set at least get_table or data");
  if ((err = grub_efiemu_unregister_configuration_table (guid)))
    return err;

  tbl = (struct grub_efiemu_configuration_table *) grub_malloc (sizeof (*tbl));
  if (! tbl)
    return grub_error (GRUB_ERR_OUT_OF_MEMORY, "couldn't register table");

  tbl->guid = guid;
  tbl->get_table = get_table;
  tbl->unload = unload;
  tbl->data = data;
  tbl->next = efiemu_config_tables;
  efiemu_config_tables = tbl;

  return GRUB_ERR_NONE;
}