2019-06-04 11:11:33 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2013-02-08 20:27:24 +04:00
/*
* 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>
2022-06-20 19:19:43 +03:00
# 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 ) ;
2013-02-08 20:27:24 +04:00
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 ,
2016-02-08 22:48:15 +03:00
const struct inode * dir , int mode , dev_t dev ,
bool is_removable ) ;
2013-02-08 20:27:24 +04:00
extern struct list_head efivarfs_list ;
# endif /* EFIVAR_FS_INTERNAL_H */