static ssize_t efivar_attr_read(struct efivar_entry *entry, char *buf) { struct efi_variable *var = &entry->var; char *str = buf; efi_status_t status; if (!entry || !buf) return -EINVAL; status = get_var_data(entry->efivars, var); if (status != EFI_SUCCESS) return -EIO; if (var->Attributes & EFI_VARIABLE_NON_VOLATILE) str += sprintf(str, "EFI_VARIABLE_NON_VOLATILE\n"); if (var->Attributes & EFI_VARIABLE_BOOTSERVICE_ACCESS) str += sprintf(str, "EFI_VARIABLE_BOOTSERVICE_ACCESS\n"); if (var->Attributes & EFI_VARIABLE_RUNTIME_ACCESS) str += sprintf(str, "EFI_VARIABLE_RUNTIME_ACCESS\n"); if (var->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) str += sprintf(str, "EFI_VARIABLE_HARDWARE_ERROR_RECORD\n"); if (var->Attributes & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) str += sprintf(str, "EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS\n"); if (var->Attributes & EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) str += sprintf(str, "EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS\n"); if (var->Attributes & EFI_VARIABLE_APPEND_WRITE) str += sprintf(str, "EFI_VARIABLE_APPEND_WRITE\n"); return str - buf; }
static ssize_t efivar_show_raw(struct efivar_entry *entry, char *buf) { struct efi_variable *var = &entry->var; efi_status_t status; if (!entry || !buf) return 0; status = get_var_data(entry->efivars, var); if (status != EFI_SUCCESS) return -EIO; memcpy(buf, var, sizeof(*var)); return sizeof(*var); }
static ssize_t efivar_data_read(struct efivar_entry *entry, char *buf) { struct efi_variable *var = &entry->var; efi_status_t status; if (!entry || !buf) return -EINVAL; status = get_var_data(entry->efivars, var); if (status != EFI_SUCCESS) return -EIO; memcpy(buf, var->Data, var->DataSize); return var->DataSize; }
static ssize_t efivar_size_read(struct efivar_entry *entry, char *buf) { struct efi_variable *var = &entry->var; char *str = buf; efi_status_t status; if (!entry || !buf) return -EINVAL; status = get_var_data(entry->efivars, var); if (status != EFI_SUCCESS) return -EIO; str += sprintf(str, "0x%lx\n", var->DataSize); return str - buf; }
static ssize_t efivar_attr_read(struct efivar_entry *entry, char *buf) { struct efi_variable *var = &entry->var; char *str = buf; efi_status_t status; if (!entry || !buf) return -EINVAL; status = get_var_data(entry->efivars, var); if (status != EFI_SUCCESS) return -EIO; if (var->Attributes & 0x1) str += sprintf(str, "EFI_VARIABLE_NON_VOLATILE\n"); if (var->Attributes & 0x2) str += sprintf(str, "EFI_VARIABLE_BOOTSERVICE_ACCESS\n"); if (var->Attributes & 0x4) str += sprintf(str, "EFI_VARIABLE_RUNTIME_ACCESS\n"); return str - buf; }