diff --git a/rtemsbsd/include/machine/rtems-bsd-muteximpl.h b/rtemsbsd/include/machine/rtems-bsd-muteximpl.h index b041bc9e..856e5f4d 100644 --- a/rtemsbsd/include/machine/rtems-bsd-muteximpl.h +++ b/rtemsbsd/include/machine/rtems-bsd-muteximpl.h @@ -75,7 +75,7 @@ rtems_bsd_mutex_lock(struct lock_object *lock, rtems_bsd_mutex *m) Thread_Control *executing; Thread_Control *owner; - _Thread_queue_Context_initialize(&queue_context, NULL); + _Thread_queue_Context_initialize(&queue_context); _Thread_queue_Acquire(&m->queue, &queue_context.Lock_context); owner = m->owner; @@ -100,7 +100,7 @@ rtems_bsd_mutex_trylock(struct lock_object *lock, rtems_bsd_mutex *m) Thread_Control *executing; Thread_Control *owner; - _Thread_queue_Context_initialize(&queue_context, NULL); + _Thread_queue_Context_initialize(&queue_context); _Thread_queue_Acquire(&m->queue, &queue_context.Lock_context); owner = m->owner; @@ -134,7 +134,7 @@ rtems_bsd_mutex_unlock(rtems_bsd_mutex *m) Thread_Control *owner; int nest_level; - _Thread_queue_Context_initialize(&queue_context, NULL); + _Thread_queue_Context_initialize(&queue_context); _Thread_queue_Acquire(&m->queue, &queue_context.Lock_context); nest_level = m->nest_level; diff --git a/rtemsbsd/rtems/rtems-kernel-muteximpl.c b/rtemsbsd/rtems/rtems-kernel-muteximpl.c index 455b089f..2b7cb686 100644 --- a/rtemsbsd/rtems/rtems-kernel-muteximpl.c +++ b/rtemsbsd/rtems/rtems-kernel-muteximpl.c @@ -60,10 +60,11 @@ rtems_bsd_mutex_lock_more(struct lock_object *lock, rtems_bsd_mutex *m, _Thread_Raise_priority(owner, executing->current_priority); ++executing->resource_count; + _Thread_queue_Context_set_expected_level(queue_context, 1); _Thread_queue_Enqueue_critical(&m->queue, BSD_MUTEX_TQ_OPERATIONS, executing, - STATES_WAITING_FOR_MUTEX, WATCHDOG_NO_TIMEOUT, 0, - &queue_context->Lock_context); + STATES_WAITING_FOR_MUTEX, WATCHDOG_NO_TIMEOUT, + queue_context); } }