From b5041439f49946fbd4a647a8b780e255735cf7b3 Mon Sep 17 00:00:00 2001
From: scipio 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: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
@@ -463,9 +463,8 @@ interface TaskParameter {
Draft-Discuss: TinyOS Developer List <tinyos-devel at mail.millennium.berkeley.edu>
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