Bugs in Semaphore implementation in Fiasco.OC?

Adam Lackorzynski adam at os.inf.tu-dresden.de
Sun Nov 27 21:40:52 CET 2011


On Tue Nov 22, 2011 at 13:36:37 -0800, Chen Tian wrote:
> I wonder if the following two problems are bugs.
> 
> 1. In u_semaphore.cpp, function wakeup_locked, (around line 189):
> w->state_change_dirty(~Thread_ipc_mask, Thread_ready);
> If thread w is running on a different core than thread c, assertion in
> function state_change_dirty will fail.
> I think it should be
>  w->state_change_dirty(~Thread_ipc_mask, Thread_ready, false);
> 
> 2.  In u_semaphore.cpp, function block_locked, (around line 146):
> c->state_del_dirty(~Thread_ipc_mask)
> should be
>  c->state_del_dirty(Thread_ipc_mask).
> 
> Otherwise, wrong bits will be cleared, which cause the assertion in
> assert_irq_entry() to fail.

Thanks, we'll check.


Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list