sched/event: fix event bug after csection was removed
Change:
Replace list_delete_init() with list_delete() in nxevent_post.
Reason:
PR 16933 removed list_delete() in nxevent_wait() and allow other task
to preempt event-wait thread after list_add_tail() option, the even-post thread
can preempt it at this time and do list_delete_init().
The problem is that list_delete_init() will make list_in_list() return true, so
DEBUGASSERT(!list_in_list(&(wait->node))); will fail in nxevent_wait() after the event-wait thread
returns.
Signed-off-by: Chengdong Wang <wangchengdong@lixiang.com>
This commit is contained in:
parent
e7ecf19a68
commit
c0d7269840
1 changed files with 1 additions and 1 deletions
|
|
@ -104,7 +104,7 @@ int nxevent_post(FAR nxevent_t *event, nxevent_mask_t events,
|
|||
if ((!waitall && ((wait->expect & event->events) != 0)) ||
|
||||
(waitall && ((wait->expect & event->events) == wait->expect)))
|
||||
{
|
||||
list_delete_init(&wait->node);
|
||||
list_delete(&wait->node);
|
||||
|
||||
ret = nxsem_post(&wait->sem);
|
||||
if (ret < 0)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue