From b5041439f49946fbd4a647a8b780e255735cf7b3 Mon Sep 17 00:00:00 2001 From: scipio Date: Mon, 22 Jan 2007 21:57:46 +0000 Subject: [PATCH] Incorporate comments from community review. --- doc/html/tep106.html | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/doc/html/tep106.html b/doc/html/tep106.html index a444e4af..4e997267 100644 --- a/doc/html/tep106.html +++ b/doc/html/tep106.html @@ -303,9 +303,9 @@ ul.auto-toc { Philip Levis and Cory Sharp Draft-Created:10-Dec-2004 -Draft-Version:1.1.2.11 +Draft-Version:1.7 -Draft-Modified:2006-11-07 +Draft-Modified:2007-01-20 Draft-Discuss:TinyOS Developer List <tinyos-devel at mail.millennium.berkeley.edu> @@ -463,9 +463,8 @@ interface TaskParameter {

Using this task interface, a component could post a task with a uint16_t parameter. When the scheduler runs the task, it will signal the runTask event with the passed parameter, which contains -the task's logic. Note, however, that this does not save any RAM: if -anything, it will cost RAM as space must be allocated in the scheduler -and may then also be allocated in the component. Furthermore, as +the task's logic. Note, however, that this does not save any RAM: +the scheduler must have RAM allocated for the parameter. Furthermore, as there can only be one copy of a task outstanding at any time, it is just as simple to store the variable in the component. E.g., rather than:

@@ -552,6 +551,10 @@ Calls of runNextTask(FALSE) may return TRUE or FALSE; calls of runNextTask(TRUE) always return TRUE. The taskLoop() command tells the scheduler to enter an infinite task-running loop, putting the MCU into a low power state when the processor is idle: it never returns.

+

The scheduler is repsonsible for putting the processor to sleep +predominantly for efficiency reasons. Including the sleep call +within the scheduler improves the efficiency of the task loop, +in terms of the assembly generated by the TinyOS toolchain.

This is the TaskBasic interface:

 interface TaskBasic {
@@ -572,6 +575,10 @@ keywords are used.

entries. When TinyOS tells the scheduler to run a task, it pulls the next identifier off the queue and uses it to dispatch on the parameterized TaskBasic interface.

+

While the default TinyOS scheduler uses a FIFO policy, TinyOS +components MUST NOT assume a FIFO policy. If two tasks must run +in a particular temporal order, this order should be enforced by +the earlier task posting the later task.

5. Replacing the Scheduler

@@ -672,7 +679,9 @@ implementation {

The requirement that basic tasks not be subject to starvation requires that a scheduler supporting EDF tasks must ensure that basic tasks run eventually even if there is an unending stream of -short deadline tasks to run.

+short deadline tasks to run. Quantifying "eventually" is difficult, +but a 1% share of the MCU cycles (or invocations) is a reasonable +approximation.

If the scheduler provides two instances of the same task interface, their unique keys are based on the name of the interface as the scheduler presents it (the "as" keyword). For example, imagine -- 2.39.2