diff options
author | xypron.glpk@gmx.de <xypron.glpk@gmx.de> | 2017-07-18 20:17:18 +0200 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2017-07-19 14:26:09 +0200 |
commit | c68415922b340c6b26f94326a6899977a67d61c9 (patch) | |
tree | e0b7f1a96651dd042dacc787bd7c6d28154cbfb7 /include | |
parent | 2fd945fe7287a15a29051242c9d021647a6f52dc (diff) | |
download | u-boot-c68415922b340c6b26f94326a6899977a67d61c9.tar.gz u-boot-c68415922b340c6b26f94326a6899977a67d61c9.tar.xz u-boot-c68415922b340c6b26f94326a6899977a67d61c9.zip |
efi_loader: implement multiple event support
Up to now the boot time supported only a single event.
This patch now allows four events.
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'include')
-rw-r--r-- | include/efi_api.h | 13 | ||||
-rw-r--r-- | include/efi_loader.h | 24 |
2 files changed, 35 insertions, 2 deletions
diff --git a/include/efi_api.h b/include/efi_api.h index a1f8221111..a3b8e04576 100644 --- a/include/efi_api.h +++ b/include/efi_api.h @@ -28,8 +28,17 @@ enum efi_event_type { EFI_TIMER_RELATIVE = 2 }; -#define EVT_NOTIFY_WAIT 0x00000100 -#define EVT_NOTIFY_SIGNAL 0x00000200 +#define EVT_TIMER 0x80000000 +#define EVT_RUNTIME 0x40000000 +#define EVT_NOTIFY_WAIT 0x00000100 +#define EVT_NOTIFY_SIGNAL 0x00000200 +#define EVT_SIGNAL_EXIT_BOOT_SERVICES 0x00000201 +#define EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE 0x60000202 + +#define TPL_APPLICATION 0x04 +#define TPL_CALLBACK 0x08 +#define TPL_NOTIFY 0x10 +#define TPL_HIGH_LEVEL 0x1F struct efi_event; diff --git a/include/efi_loader.h b/include/efi_loader.h index d7847d23e5..3d18bfbd2e 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -63,6 +63,30 @@ struct efi_object { void *handle; }; +/** + * struct efi_event + * + * @type: Type of event, see efi_create_event + * @notify_tpl: Task priority level of notifications + * @trigger_time: Period of the timer + * @trigger_next: Next time to trigger the timer + * @nofify_function: Function to call when the event is triggered + * @notify_context: Data to be passed to the notify function + * @trigger_type: Type of timer, see efi_set_timer + * @signaled: The notify function was already called + */ +struct efi_event { + u32 type; + unsigned long 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; + int signaled; +}; + + /* This list contains all UEFI objects we know of */ extern struct list_head efi_obj_list; |