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