[systemd-commits] 3 commits - src/shared

Tom Gundersen tomegun at kemper.freedesktop.org
Fri Apr 10 10:56:02 PDT 2015


 src/shared/boot-timestamps.c |    2 -
 src/shared/efivars.c         |   28 +++++++--------
 src/shared/efivars.h         |   78 +++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 90 insertions(+), 18 deletions(-)

New commits:
commit 2e036c4eae2ed43b1f98124660680e9577f0ffef
Author: Tom Gundersen <teg at jklm.no>
Date:   Fri Apr 10 19:49:36 2015 +0200

    shared: boot-timestamps - remove ifdef
    
    No need to ifdef out efi code as the functions are always defined.

diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c
index 6841959..ecbe1aa 100644
--- a/src/shared/boot-timestamps.c
+++ b/src/shared/boot-timestamps.c
@@ -39,10 +39,8 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time
 
         r = acpi_get_boot_usec(&x, &y);
         if (r < 0) {
-#ifdef ENABLE_EFI
                 r = efi_loader_get_boot_usec(&x, &y);
                 if (r < 0)
-#endif
                         return r;
         }
 

commit b28ce7c6dbe341d6f5769d31014ab8411257db7d
Author: Tom Gundersen <teg at jklm.no>
Date:   Fri Apr 10 19:44:06 2015 +0200

    shared: efivars - fix compile on non-EFI systems
    
    systemctl and logind were unconditionally using functions that were not compiled
    on non-EFI systems. Add stubs returning -EOPNOTSUPP to fix compile again.

diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index 2a925f3..d34d977 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -447,16 +447,6 @@ static uint16_t *tilt_slashes(uint16_t *s) {
         return s;
 }
 
-char *efi_tilt_backslashes(char *s) {
-        char *p;
-
-        for (p = s; *p; p++)
-                if (*p == '\\')
-                        *p = '/';
-
-        return s;
-}
-
 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) {
@@ -687,3 +677,13 @@ int efi_loader_get_device_part_uuid(sd_id128_t *u) {
 }
 
 #endif
+
+char *efi_tilt_backslashes(char *s) {
+        char *p;
+
+        for (p = s; *p; p++)
+                if (*p == '\\')
+                        *p = '/';
+
+        return s;
+}
diff --git a/src/shared/efivars.h b/src/shared/efivars.h
index 420013a..aad4993 100644
--- a/src/shared/efivars.h
+++ b/src/shared/efivars.h
@@ -32,6 +32,8 @@
 #define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
 #define EFI_VARIABLE_RUNTIME_ACCESS     0x0000000000000004
 
+#ifdef HAVE_EFI
+
 bool is_efi_boot(void);
 bool is_efi_secure_boot(void);
 bool is_efi_secure_boot_setup_mode(void);
@@ -53,4 +55,76 @@ int efi_get_boot_options(uint16_t **options);
 int efi_loader_get_device_part_uuid(sd_id128_t *u);
 int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader);
 
+#else
+
+static inline bool is_efi_boot(void) {
+        return false;
+}
+
+static inline bool is_efi_secure_boot(void) {
+        return false;
+}
+
+static inline bool is_efi_secure_boot_setup_mode(void) {
+        return false;
+}
+
+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_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_set_variable(sd_id128_t vendor, const char *name, const void *value, size_t size) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *part_uuid, char **path, bool *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 **order) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_set_boot_order(uint16_t *order, size_t n) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_get_boot_options(uint16_t **options) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_loader_get_device_part_uuid(sd_id128_t *u) {
+        return -EOPNOTSUPP;
+}
+
+static inline int efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader) {
+        return -EOPNOTSUPP;
+}
+
+#endif
+
 char *efi_tilt_backslashes(char *s);

commit 9df49b33583e8a7d0a252bc5bd532fd2448ef0c8
Author: Tom Gundersen <teg at jklm.no>
Date:   Fri Apr 10 19:43:36 2015 +0200

    shared: efivars - is_efi_*() returns bool instead of int
    
    There was a bug where is_efi_*() could return a negative error value, which would be treated as 'true',
    just make this a bool in the helper library to avoid the problem.

diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index b82f74a..2a925f3 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -87,12 +87,12 @@ static int read_flag(const char *varname) {
         return r;
 }
 
-int is_efi_secure_boot(void) {
-        return read_flag("SecureBoot");
+bool is_efi_secure_boot(void) {
+        return read_flag("SecureBoot") > 0;
 }
 
-int is_efi_secure_boot_setup_mode(void) {
-        return read_flag("SetupMode");
+bool is_efi_secure_boot_setup_mode(void) {
+        return read_flag("SetupMode") > 0;
 }
 
 int efi_reboot_to_firmware_supported(void) {
diff --git a/src/shared/efivars.h b/src/shared/efivars.h
index e796bf4..420013a 100644
--- a/src/shared/efivars.h
+++ b/src/shared/efivars.h
@@ -33,8 +33,8 @@
 #define EFI_VARIABLE_RUNTIME_ACCESS     0x0000000000000004
 
 bool is_efi_boot(void);
-int is_efi_secure_boot(void);
-int is_efi_secure_boot_setup_mode(void);
+bool is_efi_secure_boot(void);
+bool is_efi_secure_boot_setup_mode(void);
 int efi_reboot_to_firmware_supported(void);
 int efi_get_reboot_to_firmware(void);
 int efi_set_reboot_to_firmware(bool value);



More information about the systemd-commits mailing list