On Tue Nov 22, 2011 at 13:36:37 -0800, Chen Tian wrote:
I wonder if the following two problems are bugs.
- 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);
- 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