Exemple #1
0
int
efi_setvar(char *name, uuid_t *vendor, uint32_t attrib, size_t datasize,
    void *data)
{
	struct iodev_efivar_req req;
	int error;

	req.namesize = 0;
	error = libefi_utf8_to_ucs2(name, &req.namesize, &req.name);
	if (error)
		return (error);

	req.vendor = *vendor;
	req.attrib = attrib;
	req.datasize = datasize;
	req.data = data;
	req.access = IODEV_EFIVAR_SETVAR;
	error = libefi_efivar(&req);
	free(req.name);
	return (error);
}
Exemple #2
0
int
efi_nextvarname(size_t *namesize, char *name, uuid_t *vendor)
{
	struct iodev_efivar_req req;
	int error;

	req.namesize = *namesize;
	error = libefi_utf8_to_ucs2(name, &req.namesize, &req.name);
	if (error)
		return (error);

	req.vendor = *vendor;
	req.access = IODEV_EFIVAR_NEXTNAME;
	error = libefi_efivar(&req);
	*namesize = req.namesize;
	if (!error) {
		error = libefi_ucs2_to_utf8(req.name, namesize, name);
		if (!error)
			*vendor = req.vendor;
	}
	free(req.name);
	return (error);
}