forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* Copyright (C) 2012 Red Hat, Inc. |
|
* Copyright (C) 2012 Jeremy Kerr <[email protected]> |
|
*/ |
|
#ifndef EFIVAR_FS_INTERNAL_H |
|
#define EFIVAR_FS_INTERNAL_H |
|
|
|
#include <linux/list.h> |
|
#include <linux/efi.h> |
|
|
|
struct efi_variable { |
|
efi_char16_t VariableName[EFI_VAR_NAME_LEN/sizeof(efi_char16_t)]; |
|
efi_guid_t VendorGuid; |
|
unsigned long DataSize; |
|
__u8 Data[1024]; |
|
efi_status_t Status; |
|
__u32 Attributes; |
|
} __attribute__((packed)); |
|
|
|
struct efivar_entry { |
|
struct efi_variable var; |
|
struct list_head list; |
|
struct kobject kobj; |
|
}; |
|
|
|
int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *), |
|
void *data, bool duplicates, struct list_head *head); |
|
|
|
int efivar_entry_add(struct efivar_entry *entry, struct list_head *head); |
|
void __efivar_entry_add(struct efivar_entry *entry, struct list_head *head); |
|
void efivar_entry_remove(struct efivar_entry *entry); |
|
int efivar_entry_delete(struct efivar_entry *entry); |
|
|
|
int efivar_entry_size(struct efivar_entry *entry, unsigned long *size); |
|
int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes, |
|
unsigned long *size, void *data); |
|
int efivar_entry_get(struct efivar_entry *entry, u32 *attributes, |
|
unsigned long *size, void *data); |
|
int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, |
|
unsigned long *size, void *data, bool *set); |
|
|
|
int efivar_entry_iter(int (*func)(struct efivar_entry *, void *), |
|
struct list_head *head, void *data); |
|
|
|
bool efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data, |
|
unsigned long data_size); |
|
bool efivar_variable_is_removable(efi_guid_t vendor, const char *name, |
|
size_t len); |
|
|
|
extern const struct file_operations efivarfs_file_operations; |
|
extern const struct inode_operations efivarfs_dir_inode_operations; |
|
extern bool efivarfs_valid_name(const char *str, int len); |
|
extern struct inode *efivarfs_get_inode(struct super_block *sb, |
|
const struct inode *dir, int mode, dev_t dev, |
|
bool is_removable); |
|
|
|
extern struct list_head efivarfs_list; |
|
|
|
#endif /* EFIVAR_FS_INTERNAL_H */
|
|
|