[Tinyos Core WG] TOSThreads TEP

Philip Levis pal at cs.stanford.edu
Tue May 20 14:36:55 PDT 2008


On May 20, 2008, at 1:14 PM, John Regehr wrote:

>> Regarding interrupts using the current thread stack: this kills  
>> static
>> stack depth analyzers,
>
> Not true...
>
> The crux is separating out the problems:
> 1. computing WC stack depth for sequential code
> 2. putting sequential results together based on how the system works
>
> #1 is the harder problem and it is nearly orthogonal to system-level
> issues like threads, interrupts, etc. that affect #2.
>
> In a bit more detail:
>
> let
> Di = WC stack depth of interrupt handlers
> Dt = max WC stack depth over all tasks
> Dtn = WC stack depth of thread n
> N = number of threads
>
> For current TinyOS WC stack depth is
>
> Dt + Di
>
> For Kevin's current system WC stack depth is
>
> Dt + Di + sum x=1..N (Dtx + Di)
>
> When you run TinyOS not in a thread WC stack depth is:
>
> sum i=1..N (Dti + Dt + Di)
>
> With a kernel stack WC stack depth is:
>
> Dt + Di + sum x=1..N (Dtx)
>
> I am leaving out a few small constant factors but you get the idea.
> Before settling on an execution model for TOSThreads it would be  
> nice to
> plug in the numbers for some big applications (which of course don't
> exist yet...).
>
> BTW I still plan to add a stack tool into TinyOS.  It largely works,
> just haven't had time to finish it up and test it.
>
>> Is it absolutely necessary that an epilogue be specified for _all_
>> interrupt handlers? My guess is that the system would not break if  
>> you
>> allowed bursts of interrupts without the epilogues if it is  
>> guaranteed
>> that the burst is closely followed by an interrupt the handler of  
>> which
>> does have an epilogue.
>
> This sounds risky.  Preferable would be for Kevin to put some elbow
> grease into the epilogue and make the fast path <10 cycles.   
> Feasible Kevin?
>
>> You make use of function pointers pretty extensively. Is there a  
>> reason
>> why they couldn't be replaced with interface parameters?  
>> Parameterized
>> interfaces are in line with the TinyOS/nesC philosophy, and also,
>> getting rid of function pointers would make the job of analysis tools
>> much easier.
>
> Amen.

John,

I'm totally confused by your analysis of stack depths. Can I send you  
the draft of what we submitted to SenSys, you can read how it works,  
and see if that matches your analysis?

Phil


More information about the Tinyos-2.0wg mailing list