1.\" Copyright 2016 Netflix, Inc. 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd October 25, 2018 28.Dt LIBEFIVAR 3 29.Os 30.Sh NAME 31.Nm libefivar 32.Nd EFI Non Volatile Variable Support 33.Sh SYNOPSIS 34.In efivar.h 35.Ft int 36.Fn efi_append_variable "efi_guid_t guid" "const char *name" "void *data" "size_t data_size" "uint32_t attributes" 37.Ft int 38.Fn efi_del_variable "efi_guid_t guid" "const char *name" 39.Ft int 40.Fn efi_get_variable "efi_guid_t guid" "const char *name" "void **data" "ssize_t *data_size" "uint32_t *attributes" 41.Ft int 42.Fn efi_get_variable_attributes "efi_guid_t guid" "const char *name" "uint32_t *attributes" 43.Ft int 44.Fn efi_get_variable_size "efi_guid_t guid" "const char *name" "size_t *size" 45.Ft int 46.Fn efi_get_next_variable_name "efi_guid_t **guid" "char **name" 47.Ft int 48.Fn efi_guid_to_name "efi_guid_t *guid" "char **name" 49.Ft int 50.Fn efi_guid_to_symbol "efi_guid_t *guid" "char **symbol" 51.Ft int 52.Fn efi_guid_to_str "const efi_guid_t *guid" "char **sp" 53.Ft int 54.Fn efi_name_to_guid "const char *name" "efi_guid_t *guid" 55.Ft int 56.Fn efi_set_variable "efi_guid_t guid" "const char *name" "void *data" "size_t data_size" "uint32_t attributes" 57.Ft int 58.Fn efi_str_to_guid "const char *s" "efi_guid_t *guid" 59.Ft int 60.Fn efi_variables_supported "void" 61.Sh DESCRIPTION 62The 63.Nm 64library implements access to EFI Variables via the EFI Runtime 65Services. 66All 67.Vt "char *" 68strings are converted to 16-bit UTF strings before passing 69them to EFI. 70.Pp 71.Fn efi_variables_supported 72returns non-zero if the current machine supports setting of EFI firmware 73variables and the kernel support for doing so is present. 74Otherwise zero is returned. 75.Pp 76.Fn efi_del_variable 77deletes the EFI variable selected by 78.Va guid 79and 80.Va name . 81.Pp 82The following functions have not been implemented yet: 83.Bl -dash -offset indent -compact 84.It 85.Fn efi_append_variable 86.It 87.Fn efi_get_next_variable_name 88.It 89.Fn efi_get_variable 90.It 91.Fn efi_get_variable_attributes 92.It 93.Fn efi_get_variable_size 94.It 95.Fn efi_guid_to_name 96.It 97.Fn efi_guid_to_str 98.It 99.Fn efi_guid_to_symbol 100.It 101.Fn efi_name_to_guid 102.It 103.Fn efi_set_variable 104.It 105.Fn efi_str_to_guid 106.El 107.Sh SEE ALSO 108.Xr efidev 4 109.Sh HISTORY 110The 111.Nm 112library first appeared in 113.Fx 12.0 . 114.Sh AUTHORS 115.An -nosplit 116This software was originally written by 117.An Warner Losh . 118.Sh BUGS 119No facilities exist to process the strings as native UTF. 120This is a limitation in the Linux 121.Nm 122library interface. 123