AW: What happens on timeslice overrun?
Rene Wittmann
wittmaennle at gmx.de
Mon Sep 26 14:32:32 CEST 2005
>
> When you cancel an ongoing IPC operation using l4_ex_regs,
> the operation will return with L4_IPC_RECANCELED or
> L4_IPC_SECANCELED, depending on whether the ex_regs happened
> during the send or receive phase. If the IPC waits for the
> beginning of the next period, then that "wait" should be
> cancelled as well. Therefore, your code could look like this:
>
> error = l4_rt_next_period (...);
> if (error == L4_IPC_RECANCELED || error == L4_IPC_SECANCELED) {
> /*
> * Preempter aborted the next_period call upon deadline miss and I'm
> * now already in my next period (the one I originally
> wanted to wait
> * for using this next_period call).
> */
> } else {
> /*
> * next_period succeeded. I waited until the next period and it has
> * now begun. The preempter didn't cancel the call so obviously no
> * deadline miss has occurred.
> */
> }
>
So a call to l4_thread_ex_regs is sufficient and I would cancel the
next_period-IPC
with: l4_thread_ex_regs(main_thread_id, 0xFFFFFFFF, 0xFFFFFFFF, &id1, &id2,
&w1, &w2, &w3)??
(l4_thread_id id1=id2=L4_INVALID_ID, l4_umword_t w1,w2,w3).
If it's that simple, it's fine!
Regards,
Rene
More information about the l4-hackers
mailing list