Lines Matching +full:entry +full:- +full:name
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 * 17 May 2004 - Matt Domsch <Matt_Domsch@dell.com>
30 * 26 Apr 2004 - Matt Domsch <Matt_Domsch@dell.com>
33 * 21 Apr 2004 - Matt Tolentino <matthew.e.tolentino@intel.com)
38 * 10 Dec 2002 - Matt Domsch <Matt_Domsch@dell.com>
41 * 25 Mar 2002 - Matt Domsch <Matt_Domsch@dell.com>
42 * move uuid_unparse() to include/asm-ia64/efi.h:efi_guid_to_str()
44 * 12 Feb 2002 - Matt Domsch <Matt_Domsch@dell.com>
47 * v0.04 release to linux-ia64@linuxia64.org
49 * 20 April 2001 - Matt Domsch <Matt_Domsch@dell.com>
52 * v0.03 release to linux-ia64@linuxia64.org
54 * 26 March 2001 - Matt Domsch <Matt_Domsch@dell.com>
58 * 12 March 2001 - Matt Domsch <Matt_Domsch@dell.com>
62 * v0.02 release to linux-ia64@linuxia64.org
64 * 26 February 2001 - Matt Domsch <Matt_Domsch@dell.com>
65 * v0.01 release to linux-ia64@linuxia64.org
75 #define EFIVARS_DATE "2004-May-17"
102 ssize_t (*show) (struct efivar_entry *entry, char *buf);
103 ssize_t (*store)(struct efivar_entry *entry, const char *buf, size_t count);
108 .attr = {.name = __stringify(_name), .mode = _mode}, \
123 efivar_guid_read(struct efivar_entry *entry, char *buf) in efivar_guid_read() argument
125 struct efi_variable *var = &entry->var; in efivar_guid_read()
128 if (!entry || !buf) in efivar_guid_read()
131 efi_guid_to_str(&var->VendorGuid, str); in efivar_guid_read()
135 return str - buf; in efivar_guid_read()
139 efivar_attr_read(struct efivar_entry *entry, char *buf) in efivar_attr_read() argument
141 struct efi_variable *var = &entry->var; in efivar_attr_read()
142 unsigned long size = sizeof(var->Data); in efivar_attr_read()
146 if (!entry || !buf) in efivar_attr_read()
147 return -EINVAL; in efivar_attr_read()
149 ret = efivar_entry_get(entry, &var->Attributes, &size, var->Data); in efivar_attr_read()
150 var->DataSize = size; in efivar_attr_read()
152 return -EIO; in efivar_attr_read()
154 if (var->Attributes & EFI_VARIABLE_NON_VOLATILE) in efivar_attr_read()
156 if (var->Attributes & EFI_VARIABLE_BOOTSERVICE_ACCESS) in efivar_attr_read()
158 if (var->Attributes & EFI_VARIABLE_RUNTIME_ACCESS) in efivar_attr_read()
160 if (var->Attributes & EFI_VARIABLE_HARDWARE_ERROR_RECORD) in efivar_attr_read()
162 if (var->Attributes & EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) in efivar_attr_read()
165 if (var->Attributes & in efivar_attr_read()
169 if (var->Attributes & EFI_VARIABLE_APPEND_WRITE) in efivar_attr_read()
171 return str - buf; in efivar_attr_read()
175 efivar_size_read(struct efivar_entry *entry, char *buf) in efivar_size_read() argument
177 struct efi_variable *var = &entry->var; in efivar_size_read()
178 unsigned long size = sizeof(var->Data); in efivar_size_read()
182 if (!entry || !buf) in efivar_size_read()
183 return -EINVAL; in efivar_size_read()
185 ret = efivar_entry_get(entry, &var->Attributes, &size, var->Data); in efivar_size_read()
186 var->DataSize = size; in efivar_size_read()
188 return -EIO; in efivar_size_read()
190 str += sprintf(str, "0x%lx\n", var->DataSize); in efivar_size_read()
191 return str - buf; in efivar_size_read()
195 efivar_data_read(struct efivar_entry *entry, char *buf) in efivar_data_read() argument
197 struct efi_variable *var = &entry->var; in efivar_data_read()
198 unsigned long size = sizeof(var->Data); in efivar_data_read()
201 if (!entry || !buf) in efivar_data_read()
202 return -EINVAL; in efivar_data_read()
204 ret = efivar_entry_get(entry, &var->Attributes, &size, var->Data); in efivar_data_read()
205 var->DataSize = size; in efivar_data_read()
207 return -EIO; in efivar_data_read()
209 memcpy(buf, var->Data, var->DataSize); in efivar_data_read()
210 return var->DataSize; in efivar_data_read()
214 sanity_check(struct efi_variable *var, efi_char16_t *name, efi_guid_t vendor, in sanity_check() argument
218 * If only updating the variable data, then the name in sanity_check()
221 if (memcmp(name, var->VariableName, sizeof(var->VariableName)) || in sanity_check()
222 efi_guidcmp(vendor, var->VendorGuid)) { in sanity_check()
224 return -EINVAL; in sanity_check()
229 return -EINVAL; in sanity_check()
233 efivar_validate(vendor, name, data, size) == false) { in sanity_check()
235 return -EINVAL; in sanity_check()
252 memcpy(dst->VariableName, src->VariableName, EFI_VAR_NAME_LEN); in copy_out_compat()
253 memcpy(dst->Data, src->Data, sizeof(src->Data)); in copy_out_compat()
255 dst->VendorGuid = src->VendorGuid; in copy_out_compat()
256 dst->DataSize = src->DataSize; in copy_out_compat()
257 dst->Attributes = src->Attributes; in copy_out_compat()
265 efivar_store_raw(struct efivar_entry *entry, const char *buf, size_t count) in efivar_store_raw() argument
267 struct efi_variable *new_var, *var = &entry->var; in efivar_store_raw()
268 efi_char16_t *name; in efivar_store_raw() local
275 if (!entry || !buf) in efivar_store_raw()
276 return -EINVAL; in efivar_store_raw()
282 return -EINVAL; in efivar_store_raw()
285 attributes = compat->Attributes; in efivar_store_raw()
286 vendor = compat->VendorGuid; in efivar_store_raw()
287 name = compat->VariableName; in efivar_store_raw()
288 size = compat->DataSize; in efivar_store_raw()
289 data = compat->Data; in efivar_store_raw()
291 err = sanity_check(var, name, vendor, size, attributes, data); in efivar_store_raw()
295 copy_out_compat(&entry->var, compat); in efivar_store_raw()
298 return -EINVAL; in efivar_store_raw()
302 attributes = new_var->Attributes; in efivar_store_raw()
303 vendor = new_var->VendorGuid; in efivar_store_raw()
304 name = new_var->VariableName; in efivar_store_raw()
305 size = new_var->DataSize; in efivar_store_raw()
306 data = new_var->Data; in efivar_store_raw()
308 err = sanity_check(var, name, vendor, size, attributes, data); in efivar_store_raw()
312 memcpy(&entry->var, new_var, count); in efivar_store_raw()
315 err = efivar_entry_set(entry, attributes, size, data, NULL); in efivar_store_raw()
318 return -EIO; in efivar_store_raw()
325 efivar_show_raw(struct efivar_entry *entry, char *buf) in efivar_show_raw() argument
327 struct efi_variable *var = &entry->var; in efivar_show_raw()
329 unsigned long datasize = sizeof(var->Data); in efivar_show_raw()
333 if (!entry || !buf) in efivar_show_raw()
336 ret = efivar_entry_get(entry, &var->Attributes, &datasize, var->Data); in efivar_show_raw()
337 var->DataSize = datasize; in efivar_show_raw()
339 return -EIO; in efivar_show_raw()
345 memcpy(compat->VariableName, var->VariableName, in efivar_show_raw()
347 memcpy(compat->Data, var->Data, sizeof(compat->Data)); in efivar_show_raw()
349 compat->VendorGuid = var->VendorGuid; in efivar_show_raw()
350 compat->DataSize = var->DataSize; in efivar_show_raw()
351 compat->Attributes = var->Attributes; in efivar_show_raw()
369 ssize_t ret = -EIO; in efivar_attr_show()
372 return -EACCES; in efivar_attr_show()
374 if (efivar_attr->show) { in efivar_attr_show()
375 ret = efivar_attr->show(var, buf); in efivar_attr_show()
385 ssize_t ret = -EIO; in efivar_attr_store()
388 return -EACCES; in efivar_attr_store()
390 if (efivar_attr->store) in efivar_attr_store()
391 ret = efivar_attr->store(var, buf, count); in efivar_attr_store()
436 efi_char16_t *name; in efivar_create() local
443 return -EACCES; in efivar_create()
447 return -EINVAL; in efivar_create()
449 attributes = compat->Attributes; in efivar_create()
450 name = compat->VariableName; in efivar_create()
451 size = compat->DataSize; in efivar_create()
452 data = compat->Data; in efivar_create()
455 return -EINVAL; in efivar_create()
457 attributes = new_var->Attributes; in efivar_create()
458 name = new_var->VariableName; in efivar_create()
459 size = new_var->DataSize; in efivar_create()
460 data = new_var->Data; in efivar_create()
464 efivar_validate(new_var->VendorGuid, name, data, in efivar_create()
467 return -EINVAL; in efivar_create()
472 return -ENOMEM; in efivar_create()
475 copy_out_compat(&new_entry->var, compat); in efivar_create()
477 memcpy(&new_entry->var, new_var, sizeof(*new_var)); in efivar_create()
482 if (err == -EEXIST) in efivar_create()
483 err = -EINVAL; in efivar_create()
488 printk(KERN_WARNING "efivars: failed to create sysfs entry.\n"); in efivar_create()
504 struct efivar_entry *entry; in efivar_delete() local
505 efi_char16_t *name; in efivar_delete() local
510 return -EACCES; in efivar_delete()
514 return -EINVAL; in efivar_delete()
517 name = compat->VariableName; in efivar_delete()
518 vendor = compat->VendorGuid; in efivar_delete()
521 return -EINVAL; in efivar_delete()
523 name = del_var->VariableName; in efivar_delete()
524 vendor = del_var->VendorGuid; in efivar_delete()
528 return -EINTR; in efivar_delete()
529 entry = efivar_entry_find(name, vendor, &efivar_sysfs_list, true); in efivar_delete()
530 if (!entry) in efivar_delete()
531 err = -EINVAL; in efivar_delete()
532 else if (__efivar_entry_delete(entry)) in efivar_delete()
533 err = -EIO; in efivar_delete()
540 if (!entry->scanning) { in efivar_delete()
542 efivar_unregister(entry); in efivar_delete()
551 * efivar_create_sysfs_entry - create a new entry in sysfs
552 * @new_var: efivar entry to create
562 efi_char16_t *variable_name = new_var->var.VariableName; in efivar_create_sysfs_entry()
566 * Length of the variable bytes in UTF8, plus the '-' separator, in efivar_create_sysfs_entry()
574 return -ENOMEM; in efivar_create_sysfs_entry()
580 short_name[utf8_name_size] = '-'; in efivar_create_sysfs_entry()
581 efi_guid_to_str(&new_var->var.VendorGuid, in efivar_create_sysfs_entry()
584 new_var->kobj.kset = efivars_kset; in efivar_create_sysfs_entry()
586 ret = kobject_init_and_add(&new_var->kobj, &efivar_ktype, in efivar_create_sysfs_entry()
590 kobject_put(&new_var->kobj); in efivar_create_sysfs_entry()
594 kobject_uevent(&new_var->kobj, KOBJ_ADD); in efivar_create_sysfs_entry()
597 return -EINTR; in efivar_create_sysfs_entry()
612 return -ENOMEM; in create_efivars_bin_attributes()
614 attr->attr.name = "new_var"; in create_efivars_bin_attributes()
615 attr->attr.mode = 0200; in create_efivars_bin_attributes()
616 attr->write = efivar_create; in create_efivars_bin_attributes()
622 error = -ENOMEM; in create_efivars_bin_attributes()
625 attr->attr.name = "del_var"; in create_efivars_bin_attributes()
626 attr->attr.mode = 0200; in create_efivars_bin_attributes()
627 attr->write = efivar_delete; in create_efivars_bin_attributes()
634 error = sysfs_create_bin_file(&efivars_kset->kobj, efivars_new_var); in create_efivars_bin_attributes()
641 error = sysfs_create_bin_file(&efivars_kset->kobj, efivars_del_var); in create_efivars_bin_attributes()
645 sysfs_remove_bin_file(&efivars_kset->kobj, efivars_new_var); in create_efivars_bin_attributes()
658 static int efivar_update_sysfs_entry(efi_char16_t *name, efi_guid_t vendor, in efivar_update_sysfs_entry() argument
661 struct efivar_entry *entry = data; in efivar_update_sysfs_entry() local
663 if (efivar_entry_find(name, vendor, &efivar_sysfs_list, false)) in efivar_update_sysfs_entry()
666 memcpy(entry->var.VariableName, name, name_size); in efivar_update_sysfs_entry()
667 memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t)); in efivar_update_sysfs_entry()
674 struct efivar_entry *entry; in efivar_update_sysfs_entries() local
679 entry = kzalloc(sizeof(*entry), GFP_KERNEL); in efivar_update_sysfs_entries()
680 if (!entry) in efivar_update_sysfs_entries()
683 err = efivar_init(efivar_update_sysfs_entry, entry, in efivar_update_sysfs_entries()
688 efivar_create_sysfs_entry(entry); in efivar_update_sysfs_entries()
691 kfree(entry); in efivar_update_sysfs_entries()
694 static int efivars_sysfs_callback(efi_char16_t *name, efi_guid_t vendor, in efivars_sysfs_callback() argument
697 struct efivar_entry *entry; in efivars_sysfs_callback() local
699 entry = kzalloc(sizeof(*entry), GFP_KERNEL); in efivars_sysfs_callback()
700 if (!entry) in efivars_sysfs_callback()
701 return -ENOMEM; in efivars_sysfs_callback()
703 memcpy(entry->var.VariableName, name, name_size); in efivars_sysfs_callback()
704 memcpy(&(entry->var.VendorGuid), &vendor, sizeof(efi_guid_t)); in efivars_sysfs_callback()
706 efivar_create_sysfs_entry(entry); in efivars_sysfs_callback()
711 static int efivar_sysfs_destroy(struct efivar_entry *entry, void *data) in efivar_sysfs_destroy() argument
713 int err = efivar_entry_remove(entry); in efivar_sysfs_destroy()
717 efivar_unregister(entry); in efivar_sysfs_destroy()
734 sysfs_remove_bin_file(&efivars_kset->kobj, efivars_new_var); in efivars_sysfs_exit()
736 sysfs_remove_bin_file(&efivars_kset->kobj, efivars_del_var); in efivars_sysfs_exit()
748 return -ENODEV; in efivars_sysfs_init()
760 return -ENOMEM; in efivars_sysfs_init()