efi_loader: parameter types for CreateEvent, SetTimer
authorxypron.glpk@gmx.de <xypron.glpk@gmx.de>
Wed, 19 Jul 2017 17:22:34 +0000 (19:22 +0200)
committerAlexander Graf <agraf@suse.de>
Mon, 24 Jul 2017 12:54:29 +0000 (14:54 +0200)
The first argument 'type' of CreateEvent is an 32bit unsigned
integer bitmap and not an enum.

The second argument 'type' of SetTimer take values of an
enum which is called EFI_TIMER_DELAY in the UEFI standard.
To avoid confusion rename efi_event_type to efi_timer_delay.

Reported-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
include/efi_api.h
include/efi_loader.h
lib/efi_loader/efi_boottime.c

index d52eea408668965d8fb1fda24541af8c3aa28ab7..8f881d2903bdaa18089e64a85b99eee13a86937f 100644 (file)
@@ -22,7 +22,7 @@
 #endif
 
 /* Types and defines for EFI CreateEvent */
-enum efi_event_type {
+enum efi_timer_delay {
        EFI_TIMER_STOP = 0,
        EFI_TIMER_PERIODIC = 1,
        EFI_TIMER_RELATIVE = 2
@@ -59,14 +59,15 @@ struct efi_boot_services {
        efi_status_t (EFIAPI *allocate_pool)(int, unsigned long, void **);
        efi_status_t (EFIAPI *free_pool)(void *);
 
-       efi_status_t (EFIAPI *create_event)(enum efi_event_type type,
+       efi_status_t (EFIAPI *create_event)(uint32_t type,
                        UINTN notify_tpl,
                        void (EFIAPI *notify_function) (
                                        struct efi_event *event,
                                        void *context),
                        void *notify_context, struct efi_event **event);
-       efi_status_t (EFIAPI *set_timer)(struct efi_event *event, int type,
-                       uint64_t trigger_time);
+       efi_status_t (EFIAPI *set_timer)(struct efi_event *event,
+                                        enum efi_timer_delay type,
+                                        uint64_t trigger_time);
        efi_status_t (EFIAPI *wait_for_event)(unsigned long number_of_events,
                        struct efi_event **event, unsigned long *index);
        efi_status_t (EFIAPI *signal_event)(struct efi_event *event);
index 7818e1cebb4d4298b337f0cd3e474dd0626fa944..4bcd35ac77207b2cff25fbeb616a2a461d40cd54 100644 (file)
@@ -76,13 +76,13 @@ struct efi_object {
  * @signaled:          The notify function was already called
  */
 struct efi_event {
-       u32 type;
+       uint32_t type;
        UINTN notify_tpl;
        void (EFIAPI *notify_function)(struct efi_event *event, void *context);
        void *notify_context;
        u64 trigger_next;
        u64 trigger_time;
-       enum efi_event_type trigger_type;
+       enum efi_timer_delay trigger_type;
        int signaled;
 };
 
@@ -119,13 +119,13 @@ void efi_runtime_relocate(ulong offset, struct efi_mem_desc *map);
 /* Call this to set the current device name */
 void efi_set_bootdev(const char *dev, const char *devnr, const char *path);
 /* Call this to create an event */
-efi_status_t efi_create_event(enum efi_event_type type, UINTN notify_tpl,
+efi_status_t efi_create_event(uint32_t type, UINTN notify_tpl,
                              void (EFIAPI *notify_function) (
                                        struct efi_event *event,
                                        void *context),
                              void *notify_context, struct efi_event **event);
 /* Call this to set a timer */
-efi_status_t efi_set_timer(struct efi_event *event, int type,
+efi_status_t efi_set_timer(struct efi_event *event, enum efi_timer_delay type,
                           uint64_t trigger_time);
 /* Call this to signal an event */
 void efi_signal_event(struct efi_event *event);
index 7d45c18ff778644286aa5cb257b48474561121b3..e0aead47c9bf21e09493671da3084f127a2b7e5c 100644 (file)
@@ -207,7 +207,7 @@ static efi_status_t EFIAPI efi_free_pool_ext(void *buffer)
  */
 static struct efi_event efi_events[16];
 
-efi_status_t efi_create_event(enum efi_event_type type, UINTN notify_tpl,
+efi_status_t efi_create_event(uint32_t type, UINTN notify_tpl,
                              void (EFIAPI *notify_function) (
                                        struct efi_event *event,
                                        void *context),
@@ -242,7 +242,7 @@ efi_status_t efi_create_event(enum efi_event_type type, UINTN notify_tpl,
 }
 
 static efi_status_t EFIAPI efi_create_event_ext(
-                       enum efi_event_type type, UINTN notify_tpl,
+                       uint32_t type, UINTN notify_tpl,
                        void (EFIAPI *notify_function) (
                                        struct efi_event *event,
                                        void *context),
@@ -280,7 +280,7 @@ void efi_timer_check(void)
        WATCHDOG_RESET();
 }
 
-efi_status_t efi_set_timer(struct efi_event *event, int type,
+efi_status_t efi_set_timer(struct efi_event *event, enum efi_timer_delay type,
                           uint64_t trigger_time)
 {
        int i;
@@ -316,8 +316,9 @@ efi_status_t efi_set_timer(struct efi_event *event, int type,
        return EFI_INVALID_PARAMETER;
 }
 
-static efi_status_t EFIAPI efi_set_timer_ext(struct efi_event *event, int type,
-                                        uint64_t trigger_time)
+static efi_status_t EFIAPI efi_set_timer_ext(struct efi_event *event,
+                                            enum efi_timer_delay type,
+                                            uint64_t trigger_time)
 {
        EFI_ENTRY("%p, %d, %"PRIx64, event, type, trigger_time);
        return EFI_EXIT(efi_set_timer(event, type, trigger_time));