mirror of
https://github.com/espressif/openthread.git
synced 2026-08-12 05:37:46 +00:00
Process all currently queued tasklets in one shot. (#735)
This commit is contained in:
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
while (1)
|
||||
{
|
||||
otProcessNextTasklet(sInstance);
|
||||
otProcessQueuedTasklets(sInstance);
|
||||
PlatformProcessDrivers(sInstance);
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
while (1)
|
||||
{
|
||||
otProcessNextTasklet(sInstance);
|
||||
otProcessQueuedTasklets(sInstance);
|
||||
PlatformProcessDrivers(sInstance);
|
||||
}
|
||||
|
||||
|
||||
@@ -114,11 +114,11 @@ extern "C" {
|
||||
*/
|
||||
|
||||
/**
|
||||
* Run the next queued tasklet in OpenThread.
|
||||
* Run all queued OpenThread tasklets at the time this is called.
|
||||
*
|
||||
* @param[in] aInstance A pointer to an OpenThread instance.
|
||||
*/
|
||||
void otProcessNextTasklet(otInstance *aInstance);
|
||||
void otProcessQueuedTasklets(otInstance *aInstance);
|
||||
|
||||
/**
|
||||
* Indicates whether or not OpenThread has tasklets pending.
|
||||
|
||||
@@ -103,15 +103,20 @@ bool TaskletScheduler::AreTaskletsPending(void)
|
||||
return mHead != NULL;
|
||||
}
|
||||
|
||||
void TaskletScheduler::RunNextTasklet(void)
|
||||
void TaskletScheduler::ProcessQueuedTasklets(void)
|
||||
{
|
||||
Tasklet *task;
|
||||
Tasklet *tail = mTail;
|
||||
Tasklet *cur;
|
||||
|
||||
task = PopTasklet();
|
||||
|
||||
if (task != NULL)
|
||||
while ((cur = PopTasklet()) != NULL)
|
||||
{
|
||||
task->RunTask();
|
||||
cur->RunTask();
|
||||
|
||||
// only process tasklets that were queued at the time this method was called
|
||||
if (cur == tail)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -125,10 +125,10 @@ public:
|
||||
bool AreTaskletsPending(void);
|
||||
|
||||
/**
|
||||
* This method runs the next tasklet.
|
||||
* This method processes all tasklets queued when this is called.
|
||||
*
|
||||
*/
|
||||
void RunNextTasklet(void);
|
||||
void ProcessQueuedTasklets(void);
|
||||
|
||||
private:
|
||||
Tasklet *PopTasklet(void);
|
||||
|
||||
@@ -98,9 +98,9 @@ static void *sEnergyScanCallbackContext = NULL;
|
||||
static otHandleActiveScanResult sDiscoverCallback = NULL;
|
||||
static void *sDiscoverCallbackContext = NULL;
|
||||
|
||||
void otProcessNextTasklet(otInstance *)
|
||||
void otProcessQueuedTasklets(otInstance *)
|
||||
{
|
||||
sIp6->mTaskletScheduler.RunNextTasklet();
|
||||
sIp6->mTaskletScheduler.ProcessQueuedTasklets();
|
||||
}
|
||||
|
||||
bool otAreTaskletsPending(otInstance *)
|
||||
|
||||
Reference in New Issue
Block a user