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