Process all currently queued tasklets in one shot. (#735)

This commit is contained in:
Jonathan Hui
2016-09-30 15:21:03 -07:00
committed by GitHub
parent a93948614b
commit 7325d2edf4
6 changed files with 19 additions and 14 deletions
+1 -1
View File
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
while (1)
{
otProcessNextTasklet(sInstance);
otProcessQueuedTasklets(sInstance);
PlatformProcessDrivers(sInstance);
}
+1 -1
View File
@@ -78,7 +78,7 @@ int main(int argc, char *argv[])
while (1)
{
otProcessNextTasklet(sInstance);
otProcessQueuedTasklets(sInstance);
PlatformProcessDrivers(sInstance);
}
+2 -2
View File
@@ -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.
+11 -6
View File
@@ -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;
}
}
}
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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 *)