]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/efivars.h
efivars: include errno.h when EFI support is disabled (#7900)
[thirdparty/systemd.git] / src / shared / efivars.h
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
2e3d0692
LP
2#pragma once
3
4/***
5 This file is part of systemd.
6
7 Copyright 2013 Lennart Poettering
8
9 systemd is free software; you can redistribute it and/or modify it
10 under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation; either version 2.1 of the License, or
12 (at your option) any later version.
13
14 systemd is distributed in the hope that it will be useful, but
15 WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with systemd; If not, see <http://www.gnu.org/licenses/>.
21***/
22
5caf4936
YW
23#if ! ENABLE_EFI
24#include <errno.h>
25#endif
f4ce2b3e 26#include <stdbool.h>
a8fbdf54
TA
27#include <stddef.h>
28#include <stdint.h>
2e3d0692
LP
29
30#include "sd-id128.h"
71d35b6b 31
f4ce2b3e 32#include "time-util.h"
2e3d0692 33
7b4d7cc0
KS
34#define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f)
35#define EFI_VENDOR_GLOBAL SD_ID128_MAKE(8b,e4,df,61,93,ca,11,d2,aa,0d,00,e0,98,03,2b,8c)
0974a682
KS
36#define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
37#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
38#define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
7b4d7cc0 39
349cc4a5 40#if ENABLE_EFI
b28ce7c6 41
9cde64ff 42bool is_efi_boot(void);
9df49b33
TG
43bool is_efi_secure_boot(void);
44bool is_efi_secure_boot_setup_mode(void);
5bdf2243
JJ
45int efi_reboot_to_firmware_supported(void);
46int efi_get_reboot_to_firmware(void);
47int efi_set_reboot_to_firmware(bool value);
34e5a31e 48
2e3d0692 49int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size);
0974a682 50int efi_set_variable(sd_id128_t vendor, const char *name, const void *value, size_t size);
9cde64ff 51int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p);
7b4d7cc0 52
0974a682
KS
53int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *part_uuid, char **path, bool *active);
54int efi_add_boot_option(uint16_t id, const char *title, uint32_t part, uint64_t pstart, uint64_t psize, sd_id128_t part_uuid, const char *path);
55int efi_remove_boot_option(uint16_t id);
9cde64ff 56int efi_get_boot_order(uint16_t **order);
0974a682 57int efi_set_boot_order(uint16_t *order, size_t n);
9cde64ff 58int efi_get_boot_options(uint16_t **options);
34e5a31e 59
c51d84dc
KS
60int efi_loader_get_device_part_uuid(sd_id128_t *u);
61int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader);
0974a682 62
b28ce7c6
TG
63#else
64
65static inline bool is_efi_boot(void) {
66 return false;
67}
68
69static inline bool is_efi_secure_boot(void) {
70 return false;
71}
72
73static inline bool is_efi_secure_boot_setup_mode(void) {
74 return false;
75}
76
77static inline int efi_reboot_to_firmware_supported(void) {
78 return -EOPNOTSUPP;
79}
80
81static inline int efi_get_reboot_to_firmware(void) {
82 return -EOPNOTSUPP;
83}
84
85static inline int efi_set_reboot_to_firmware(bool value) {
86 return -EOPNOTSUPP;
87}
88
89static inline int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size) {
90 return -EOPNOTSUPP;
91}
92
93static inline int efi_set_variable(sd_id128_t vendor, const char *name, const void *value, size_t size) {
94 return -EOPNOTSUPP;
95}
96
97static inline int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p) {
98 return -EOPNOTSUPP;
99}
100
101static inline int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *part_uuid, char **path, bool *active) {
102 return -EOPNOTSUPP;
103}
104
105static inline int efi_add_boot_option(uint16_t id, const char *title, uint32_t part, uint64_t pstart, uint64_t psize, sd_id128_t part_uuid, const char *path) {
106 return -EOPNOTSUPP;
107}
108
109static inline int efi_remove_boot_option(uint16_t id) {
110 return -EOPNOTSUPP;
111}
112
113static inline int efi_get_boot_order(uint16_t **order) {
114 return -EOPNOTSUPP;
115}
116
117static inline int efi_set_boot_order(uint16_t *order, size_t n) {
118 return -EOPNOTSUPP;
119}
120
121static inline int efi_get_boot_options(uint16_t **options) {
122 return -EOPNOTSUPP;
123}
124
125static inline int efi_loader_get_device_part_uuid(sd_id128_t *u) {
126 return -EOPNOTSUPP;
127}
128
129static inline int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader) {
130 return -EOPNOTSUPP;
131}
132
133#endif
134
0974a682 135char *efi_tilt_backslashes(char *s);