mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-15 19:08:21 +08:00
rtems-bsd-mutex: Support priority changes
This commit is contained in:
@@ -131,18 +131,20 @@ static inline void
|
||||
rtems_bsd_mutex_unlock(rtems_bsd_mutex *m)
|
||||
{
|
||||
ISR_lock_Context lock_context;
|
||||
Thread_Control *owner;
|
||||
int nest_level;
|
||||
|
||||
_ISR_lock_ISR_disable_and_acquire(&m->lock, &lock_context);
|
||||
|
||||
nest_level = m->nest_level;
|
||||
owner = m->owner;
|
||||
|
||||
BSD_ASSERT(owner == _Thread_Executing);
|
||||
|
||||
if (__predict_true(nest_level == 0)) {
|
||||
RBTree_Node *first = _RBTree_First(&m->rivals, RBT_LEFT);
|
||||
Thread_Control *owner = m->owner;
|
||||
int keep_priority;
|
||||
|
||||
BSD_ASSERT(owner == _Thread_Executing);
|
||||
|
||||
--owner->resource_count;
|
||||
keep_priority = _Thread_Owns_resources(owner)
|
||||
|| owner->real_priority == owner->current_priority;
|
||||
|
Reference in New Issue
Block a user