本文件纯属个人理解,如有错误,欢迎指出
1. Task Priority Level, 任务优先级
任务优先级, 数值越大,优先级越高。优先级高于当前任务优先级的任务可能抢占当前中断当前任务的执行。在UEFI标准中,只有4个优先级
表格 1 任务优先级
Task Priority Level |
Value |
中断 |
使用经典场景 |
TPL_APPLICATION |
4 |
启用 |
.efi文件运行时的默认优先级;调用WaitForEvent时必须处于TPL_APPLICATION优先级 |
TPL_CALLBACK |
8 |
启用 |
中间优先级 |
TPL_NOTIFY |
16 |
启用 |
中间优先级 |
TPL_HIGH_LEVEL |
31 |
禁用 |
最高优先级,处于此优先级时 |
可调用BootService的RiseTPL/RestoreTPL提升或降低任务优先级。在RestoreTPL时,会调用处于等调用事件处理函数队列中高于当前任务优先级的事件处理函数。
2. Event, 事件
用于同步事件,如,定时器到达指定点后,定时器中断程序会通过调用事件中指定的回调函数及参数完成指定定时任务。
事件共有如下几种类型
表格 2 Event类型
Type |
值 |
功能 |
EVT_TIMER |
0x80000000 |
定时器 |
EVT_RUNTIME |
0x40000000 |
运行时事件 |
EVT_NOTIFY_WAIT |
0x00000100 |
等待事件,checkEvent时会被移入Notify_Callback< |