diff options
author | Heinrich Schuchardt <xypron.glpk@gmx.de> | 2017-09-15 10:06:13 +0200 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2017-09-18 23:53:57 +0200 |
commit | ca62a4f53e82d4877e3b5fb7d7cd5c1ecc485e32 (patch) | |
tree | f56a15bbba9eb6d66f8d345f9277e1a7dee1fb78 /include | |
parent | 38b1b79021418709bcc55504d1fec31d8a365f56 (diff) | |
download | u-boot-ca62a4f53e82d4877e3b5fb7d7cd5c1ecc485e32.tar.gz |
efi_loader: implement queueing of the notification function
For the correct implementation of the task priority level (TPL)
calling the notification function must be queued.
Add a status field 'queued' to events.
In function efi_signal_event set status queued if a notification
function exists and reset it after we have called the function.
A later patch will add a check of the TPL here.
In efi_create_event and efi_close_event unset the queued status.
In function efi_wait_for_event and efi_check_event
queue the notification function.
In efi_timer_check call the efi_notify_event
if the status queued is set.
For all timer events set status signaled.
In efi_console_timer_notify set the signaled state of the
WaitForKey event.
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_loader.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/efi_loader.h b/include/efi_loader.h index f74b33d589..25398ba40c 100644 --- a/include/efi_loader.h +++ b/include/efi_loader.h @@ -131,7 +131,8 @@ struct efi_object { * @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 + * @queued: The notification functionis queued + * @signaled: The event occured */ struct efi_event { uint32_t type; @@ -141,6 +142,7 @@ struct efi_event { u64 trigger_next; u64 trigger_time; enum efi_timer_delay trigger_type; + int queued; int signaled; }; |