|  | /* SPDX-License-Identifier: GPL-2.0-only */ | 
|  | /* | 
|  | * Copyright (C) 2012 Red Hat, Inc. | 
|  | * Copyright (C) 2012 Jeremy Kerr <jeremy.kerr@canonical.com> | 
|  | */ | 
|  | #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 */ |