【发布时间】:2021-07-13 04:33:20
【问题描述】:
我已经创建了一个这样的计时器,它可以工作,但是当我想创建两个计时器一起工作时,只有一个计时器的回调功能可以工作,请帮助,谢谢:
EFI_STATUS TimerInit()
{
EFI_STATUS Status;
EFI_HANDLE TimerOne = NULL;
//BOOLEAN ExitMark = FALSE;
static const UINTN SecondsToNanoSeconds = 1000000;
Status = gBS->CreateEvent(
EVT_NOTIFY_SIGNAL | EVT_TIMER,
TPL_CALLBACK,
TimeoutSelf,
NULL,
&TimerOne
);
if ( EFI_ERROR( Status ) )
{
Print( L"Create Event Error! \r\n" );
return(1);
}
Status = gBS->SetTimer(
TimerOne,
TimerPeriodic,
MultU64x32( SecondsToNanoSeconds, 1)
);
if ( EFI_ERROR( Status ) )
{
Print( L"Set Timer Error! \r\n" );
return(2);
}
while (1 )
{
// do something
}
// cancel timer
gBS->SetTimer( TimerOne, TimerCancel, 0 );
gBS->CloseEvent( TimerOne );
return EFI_SUCCESS;
}
如果我创建两个计时器,我将创建另一个 TimeoutSelf 函数。也是。
【问题讨论】:
-
能否将您的代码分享给 2 个计时器?
-
@MiSimon,我已经意识到它使用 3 个事件和 1 个计时器,谢谢。
标签: edk2