[rtems-libbsd commit] rtems-bsd-mutex: Update due to API changes

Sebastian Huber sebh at rtems.org
Thu Sep 22 05:23:04 UTC 2016


Module:    rtems-libbsd
Branch:    master
Commit:    02d344f4d0f699cee4de57d9232f0a44b89e1789
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=02d344f4d0f699cee4de57d9232f0a44b89e1789

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Thu Sep 22 07:22:42 2016 +0200

rtems-bsd-mutex: Update due to API changes

---

 rtemsbsd/include/machine/rtems-bsd-muteximpl.h | 36 ++++++++------------------
 1 file changed, 11 insertions(+), 25 deletions(-)

diff --git a/rtemsbsd/include/machine/rtems-bsd-muteximpl.h b/rtemsbsd/include/machine/rtems-bsd-muteximpl.h
index 4a871be..d4d68c4 100644
--- a/rtemsbsd/include/machine/rtems-bsd-muteximpl.h
+++ b/rtemsbsd/include/machine/rtems-bsd-muteximpl.h
@@ -79,7 +79,7 @@ rtems_bsd_mutex_lock(struct lock_object *lock, rtems_bsd_mutex *m)
 	Thread_Control *owner;
 
 	_Thread_queue_Context_initialize(&queue_context);
-	_Thread_queue_Acquire(&m->queue, &queue_context.Lock_context);
+	_Thread_queue_Acquire(&m->queue, &queue_context);
 
 	owner = m->queue.Queue.owner;
 	executing = _Thread_Executing;
@@ -88,7 +88,7 @@ rtems_bsd_mutex_lock(struct lock_object *lock, rtems_bsd_mutex *m)
 		m->queue.Queue.owner = executing;
 		++executing->resource_count;
 
-		_Thread_queue_Release(&m->queue, &queue_context.Lock_context);
+		_Thread_queue_Release(&m->queue, &queue_context);
 	} else {
 		rtems_bsd_mutex_lock_more(lock, m, owner, executing,
 		    &queue_context);
@@ -104,7 +104,7 @@ rtems_bsd_mutex_trylock(struct lock_object *lock, rtems_bsd_mutex *m)
 	Thread_Control *owner;
 
 	_Thread_queue_Context_initialize(&queue_context);
-	_Thread_queue_Acquire(&m->queue, &queue_context.Lock_context);
+	_Thread_queue_Acquire(&m->queue, &queue_context);
 
 	owner = m->queue.Queue.owner;
 	executing = _Thread_Executing;
@@ -121,7 +121,7 @@ rtems_bsd_mutex_trylock(struct lock_object *lock, rtems_bsd_mutex *m)
 		success = 0;
 	}
 
-	_Thread_queue_Release(&m->queue, &queue_context.Lock_context);
+	_Thread_queue_Release(&m->queue, &queue_context);
 
 	return (success);
 }
@@ -134,7 +134,7 @@ rtems_bsd_mutex_unlock(rtems_bsd_mutex *m)
 	int nest_level;
 
 	_Thread_queue_Context_initialize(&queue_context);
-	_Thread_queue_Acquire(&m->queue, &queue_context.Lock_context);
+	_Thread_queue_Acquire(&m->queue, &queue_context);
 
 	nest_level = m->nest_level;
 	owner = m->queue.Queue.owner;
@@ -143,35 +143,21 @@ rtems_bsd_mutex_unlock(rtems_bsd_mutex *m)
 
 	if (__predict_true(nest_level == 0)) {
 		Thread_queue_Heads *heads;
-		int keep_priority;
-
-		--owner->resource_count;
-
-		/*
-		 * Ensure that the owner resource count is visible to all other
-		 * processors and that we read the latest priority restore
-		 * hint.
-		 */
-		_Atomic_Fence( ATOMIC_ORDER_ACQ_REL );
 
 		heads = m->queue.Queue.heads;
-		keep_priority = _Thread_Owns_resources(owner)
-		    || !owner->priority_restore_hint;
-
 		m->queue.Queue.owner = NULL;
+		--owner->resource_count;
 
-		if (__predict_true(heads == NULL && keep_priority)) {
-			_Thread_queue_Release(&m->queue, &queue_context.Lock_context);
+		if (__predict_true(heads == NULL)) {
+			_Thread_queue_Release(&m->queue, &queue_context);
 		} else {
-			_Thread_queue_Surrender(&m->queue.Queue,
-			    RTEMS_BSD_MUTEX_TQ_OPERATIONS, heads, owner,
-			    keep_priority, &queue_context);
+			_Thread_queue_Surrender(&m->queue.Queue, heads, owner,
+			    &queue_context, RTEMS_BSD_MUTEX_TQ_OPERATIONS);
 		}
-
 	} else {
 		m->nest_level = nest_level - 1;
 
-		_Thread_queue_Release(&m->queue, &queue_context.Lock_context);
+		_Thread_queue_Release(&m->queue, &queue_context);
 	}
 }
 




More information about the vc mailing list