efi-loader: split efi-api.[ch] from efi-loader.[ch]

Some refactoring: split efi-loader.[ch] in two: isolate the calls that
implement out boot loader interface spec, and those which implement
access to upstream UEFI firmware features.

They are quite different in nature and behaviour, and even semantically
it makes to keep these two separate. At the very least because the
previous name "efi-loader.[ch]" suggests all was about loader-specific
APIs, but much of it is generic uefi stuff...

While we are at it, I renamed a bunch of return parameters to follow our
usual ret_xyz naming. But besides renaming no real code changes.
This commit is contained in:
Lennart Poettering
2022-03-24 15:21:09 +01:00
parent 8fc5c44426
commit 7be4b23649
10 changed files with 653 additions and 620 deletions
+68
View File
@@ -0,0 +1,68 @@
/* SPDX-License-Identifier: LGPL-2.1-or-later */
#pragma once
#include "efivars-fundamental.h"
#include "efivars.h"
/* Various calls for interfacing with EFI variables from the official UEFI specs. */
#if ENABLE_EFI
int efi_reboot_to_firmware_supported(void);
int efi_get_reboot_to_firmware(void);
int efi_set_reboot_to_firmware(bool value);
int efi_get_boot_option(uint16_t nr, char **ret_title, sd_id128_t *ret_part_uuid, char **ret_path, bool *ret_active);
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);
int efi_remove_boot_option(uint16_t id);
int efi_get_boot_order(uint16_t **ret_order);
int efi_set_boot_order(const uint16_t *order, size_t n);
int efi_get_boot_options(uint16_t **ret_options);
bool efi_has_tpm2(void);
#else
static inline int efi_reboot_to_firmware_supported(void) {
return -EOPNOTSUPP;
}
static inline int efi_get_reboot_to_firmware(void) {
return -EOPNOTSUPP;
}
static inline int efi_set_reboot_to_firmware(bool value) {
return -EOPNOTSUPP;
}
static inline int efi_get_boot_option(uint16_t nr, char **ret_title, sd_id128_t *ret_part_uuid, char **ret_path, bool *ret_active) {
return -EOPNOTSUPP;
}
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) {
return -EOPNOTSUPP;
}
static inline int efi_remove_boot_option(uint16_t id) {
return -EOPNOTSUPP;
}
static inline int efi_get_boot_order(uint16_t **ret_order) {
return -EOPNOTSUPP;
}
static inline int efi_set_boot_order(const uint16_t *order, size_t n) {
return -EOPNOTSUPP;
}
static inline int efi_get_boot_options(uint16_t **ret_options) {
return -EOPNOTSUPP;
}
static inline bool efi_has_tpm2(void) {
return false;
}
#endif
char *efi_tilt_backslashes(char *s);