What happens on timeslice overrun?

Rene Wittmann wittmaennle at gmx.de
Sun Aug 14 22:16:09 CEST 2005


I have 2 questions on the RT part in DROPS:

1.) I have 2 RT working threads, each with 3 timeslices:
Thread 1: period=10ms 
          ts1=30ms prio1=50
          ts2=10ms prio2=30
          ts3=20ms prio3=50

Thread 2: period=10ms
          ts1=20ms prio1=40
          ts2=5ms  prio2=30
          ts3=10ms prio3=40

Assume both threads are ready at the same time.
So thread 1 starts and does its work until it 
releases the voluntarily or it's preempted by 
its preempter-thread. So say it releases 
voluntarily after 20ms. 

Who will get the left 10ms? I guess nobody. 
Or can I assign my left time to a specific 
thread, say ts2 of thread 1, that is has 20ms 
after recognizing that ts1 was finished 10ms 
earlier?I could do with l4_rt_change_timeslice(), 
but this would probably not work for the the 
current period! (or yes?)

I could even imagine that it would work in my case
described above, as thread 2 would be next after ts1
of thread 1, but consider thread 2 didn't exist...

2.) Consider we have a deadline miss. And we say 
l4_rt_next_period(): would it wait for the beginning
of the next (which means:
  period 1: deadline miss
  period 2: call next period (because we think we're
            still in period 1)+ wait to end of period
  period 3: normal work)
Or do I have to care that we do not call 
l4_rt_next_period() in case of a deadline miss?

BTW: I compiled the fiasco-kernel with apic+one shot 
mode. But this should not be relevant for my question.


More information about the l4-hackers mailing list