X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=lib%2Fefi%2Fefivar.h;h=9307d6c1761156cc802f0f8692744e5592d17c46;hb=9e869ebe3a5127575105d82c4d289d95cbed2db9;hp=ebf73facb32e5d4f40d2815b65cfb92f761c244b;hpb=a915889b7fbbc4be11f9a37ea7afb5b3f3d41173;p=petitboot diff --git a/lib/efi/efivar.h b/lib/efi/efivar.h index ebf73fa..9307d6c 100644 --- a/lib/efi/efivar.h +++ b/lib/efi/efivar.h @@ -19,7 +19,7 @@ #ifndef EFIVAR_H #define EFIVAR_H -#include +#include #include #define EFI_VARIABLE_NON_VOLATILE 0x00000001 @@ -30,17 +30,36 @@ #define EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS 0x00000020 #define EFI_VARIABLE_APPEND_WRITE 0x00000040 -#ifndef EFIVARFS_MAGIC -#define EFIVARFS_MAGIC 0xde5e81e4 -#endif +#define EFI_DEFALT_ATTRIBUTES ( \ + EFI_VARIABLE_NON_VOLATILE | \ + EFI_VARIABLE_RUNTIME_ACCESS | \ + EFI_VARIABLE_BOOTSERVICE_ACCESS \ +) -void set_efivarfs_path(const char *path); -const char *get_efivarfs_path(void); +struct efi_data { + uint32_t attributes; + size_t data_size; + void *data; + uint8_t fill[0]; +}; -int efi_get_variable(void *ctx, const char *guidstr, const char *name, - uint8_t **data, size_t *data_size, uint32_t *attributes); -int efi_set_variable(void *ctx, const char *guidstr, const char *name, - uint8_t *data, size_t data_size, uint32_t attributes); -int efi_del_variable(void *ctx, const char *guidstr, const char *name); +struct efi_mount { + const char *path; + const char *guid; +}; + +void efi_init_mount(struct efi_mount *efi_mount, const char *path, + const char *guid); +bool efi_check_mount_magic(const struct efi_mount *efi_mount, bool check_magic); +static inline bool efi_check_mount(const struct efi_mount *efi_mount) +{ + return efi_check_mount_magic(efi_mount, true); +} + +int efi_get_variable(void *ctx, const struct efi_mount *efi_mount, + const char *name, struct efi_data **efi_data); +int efi_set_variable(const struct efi_mount *efi_mount, const char *name, + const struct efi_data *efi_data); +int efi_del_variable(const struct efi_mount *efi_mount, const char *name); #endif /* EFIVAR_H */