Commit | Line | Data |
---|---|---|
d2912cb1 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
d68772b7 MF |
2 | /* |
3 | * Copyright (C) 2012 Red Hat, Inc. | |
4 | * Copyright (C) 2012 Jeremy Kerr <jeremy.kerr@canonical.com> | |
d68772b7 MF |
5 | */ |
6 | #ifndef EFIVAR_FS_INTERNAL_H | |
7 | #define EFIVAR_FS_INTERNAL_H | |
8 | ||
9 | #include <linux/list.h> | |
2d82e622 AB |
10 | #include <linux/efi.h> |
11 | ||
5329aa51 JZ |
12 | struct efivarfs_mount_opts { |
13 | kuid_t uid; | |
14 | kgid_t gid; | |
15 | }; | |
16 | ||
17 | struct efivarfs_fs_info { | |
18 | struct efivarfs_mount_opts mount_opts; | |
cdb46a8a | 19 | struct list_head efivarfs_list; |
94f7f618 MK |
20 | struct super_block *sb; |
21 | struct notifier_block nb; | |
5329aa51 JZ |
22 | }; |
23 | ||
2d82e622 AB |
24 | struct efi_variable { |
25 | efi_char16_t VariableName[EFI_VAR_NAME_LEN/sizeof(efi_char16_t)]; | |
26 | efi_guid_t VendorGuid; | |
2d82e622 | 27 | __u32 Attributes; |
89ea21d7 | 28 | }; |
2d82e622 AB |
29 | |
30 | struct efivar_entry { | |
31 | struct efi_variable var; | |
32 | struct list_head list; | |
33 | struct kobject kobj; | |
34 | }; | |
35 | ||
cdb46a8a AB |
36 | int efivar_init(int (*func)(efi_char16_t *, efi_guid_t, unsigned long, void *, |
37 | struct list_head *), | |
2ce507f5 | 38 | void *data, struct list_head *head); |
2d82e622 AB |
39 | |
40 | int efivar_entry_add(struct efivar_entry *entry, struct list_head *head); | |
41 | void __efivar_entry_add(struct efivar_entry *entry, struct list_head *head); | |
42 | void efivar_entry_remove(struct efivar_entry *entry); | |
43 | int efivar_entry_delete(struct efivar_entry *entry); | |
44 | ||
45 | int efivar_entry_size(struct efivar_entry *entry, unsigned long *size); | |
46 | int __efivar_entry_get(struct efivar_entry *entry, u32 *attributes, | |
47 | unsigned long *size, void *data); | |
48 | int efivar_entry_get(struct efivar_entry *entry, u32 *attributes, | |
49 | unsigned long *size, void *data); | |
50 | int efivar_entry_set_get_size(struct efivar_entry *entry, u32 attributes, | |
51 | unsigned long *size, void *data, bool *set); | |
52 | ||
53 | int efivar_entry_iter(int (*func)(struct efivar_entry *, void *), | |
54 | struct list_head *head, void *data); | |
55 | ||
56 | bool efivar_validate(efi_guid_t vendor, efi_char16_t *var_name, u8 *data, | |
57 | unsigned long data_size); | |
58 | bool efivar_variable_is_removable(efi_guid_t vendor, const char *name, | |
59 | size_t len); | |
d68772b7 MF |
60 | |
61 | extern const struct file_operations efivarfs_file_operations; | |
62 | extern const struct inode_operations efivarfs_dir_inode_operations; | |
63 | extern bool efivarfs_valid_name(const char *str, int len); | |
64 | extern struct inode *efivarfs_get_inode(struct super_block *sb, | |
ed8b0de5 PJ |
65 | const struct inode *dir, int mode, dev_t dev, |
66 | bool is_removable); | |
d68772b7 | 67 | |
d68772b7 | 68 | #endif /* EFIVAR_FS_INTERNAL_H */ |