summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-23 06:26:58 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-25 12:43:53 +0200
commit8866e6222f5cbfa285b6411fb74154289b024c6b (patch)
treeefb749aece2eb57246e1285f419dff9ebb44c0d9 /cpukit/score
parentmpci: Fix thread queue flush method (diff)
downloadrtems-8866e6222f5cbfa285b6411fb74154289b024c6b.tar.bz2
score: Move thread queue object support
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/include/rtems/score/threadimpl.h20
-rw-r--r--cpukit/score/include/rtems/score/threadqimpl.h27
-rw-r--r--cpukit/score/src/threadwaitgetid.c8
3 files changed, 29 insertions, 26 deletions
diff --git a/cpukit/score/include/rtems/score/threadimpl.h b/cpukit/score/include/rtems/score/threadimpl.h
index 0802730832..cef2786ae4 100644
--- a/cpukit/score/include/rtems/score/threadimpl.h
+++ b/cpukit/score/include/rtems/score/threadimpl.h
@@ -1464,26 +1464,6 @@ RTEMS_INLINE_ROUTINE void _Thread_Wait_set_timeout_code(
}
/**
- * @brief Helper structure to ensure that all objects containing a thread queue
- * have the right layout.
- *
- * @see _Thread_Wait_get_id() and THREAD_WAIT_QUEUE_OBJECT_ASSERT().
- */
-typedef struct {
- Objects_Control Object;
- Thread_queue_Control Wait_queue;
-} Thread_Wait_queue_object;
-
-#define THREAD_WAIT_QUEUE_OBJECT_ASSERT( object_type, wait_queue_member ) \
- RTEMS_STATIC_ASSERT( \
- offsetof( object_type, wait_queue_member ) \
- == offsetof( Thread_Wait_queue_object, Wait_queue ) \
- && ( &( ( (object_type *) 0 )->wait_queue_member ) \
- == ( &( (Thread_Wait_queue_object *) 0 )->Wait_queue ) ), \
- object_type \
- )
-
-/**
* @brief Returns the object identifier of the object containing the current
* thread wait queue.
*
diff --git a/cpukit/score/include/rtems/score/threadqimpl.h b/cpukit/score/include/rtems/score/threadqimpl.h
index 0c4e979a5e..f24e48c29f 100644
--- a/cpukit/score/include/rtems/score/threadqimpl.h
+++ b/cpukit/score/include/rtems/score/threadqimpl.h
@@ -795,6 +795,33 @@ void _Thread_queue_Unblock_proxy(
);
#endif
+/**
+ * @brief Helper structure to ensure that all objects containing a thread queue
+ * have the right layout.
+ *
+ * @see _Thread_Wait_get_id() and THREAD_QUEUE_OBJECT_ASSERT().
+ */
+typedef struct {
+ Objects_Control Object;
+ Thread_queue_Control Wait_queue;
+} Thread_queue_Object;
+
+#define THREAD_QUEUE_OBJECT_ASSERT( object_type, wait_queue_member ) \
+ RTEMS_STATIC_ASSERT( \
+ offsetof( object_type, wait_queue_member ) \
+ == offsetof( Thread_queue_Object, Wait_queue ) \
+ && ( &( ( (object_type *) 0 )->wait_queue_member ) \
+ == ( &( (Thread_queue_Object *) 0 )->Wait_queue ) ), \
+ object_type \
+ )
+
+#define THREAD_QUEUE_QUEUE_TO_OBJECT( queue ) \
+ RTEMS_CONTAINER_OF( \
+ queue, \
+ Thread_queue_Object, \
+ Wait_queue.Queue \
+ )
+
extern const Thread_queue_Operations _Thread_queue_Operations_default;
extern const Thread_queue_Operations _Thread_queue_Operations_FIFO;
diff --git a/cpukit/score/src/threadwaitgetid.c b/cpukit/score/src/threadwaitgetid.c
index 0851e8f18d..6c12fd6d3e 100644
--- a/cpukit/score/src/threadwaitgetid.c
+++ b/cpukit/score/src/threadwaitgetid.c
@@ -39,13 +39,9 @@ Objects_Id _Thread_Wait_get_id( const Thread_Control *the_thread )
#endif
if ( ( current_state & THREAD_WAIT_QUEUE_OBJECT_STATES ) != 0 ) {
- const Thread_Wait_queue_object *queue_object;
+ const Thread_queue_Object *queue_object;
- queue_object = RTEMS_CONTAINER_OF(
- the_thread->Wait.queue,
- Thread_Wait_queue_object,
- Wait_queue.Queue
- );
+ queue_object = THREAD_QUEUE_QUEUE_TO_OBJECT( the_thread->Wait.queue );
return queue_object->Object.id;
}