diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-05 14:36:30 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-04-06 09:08:20 +0200 |
commit | 97312fcc6da163d76b69bf8ce68fd791cf014c2a (patch) | |
tree | 6599b770a1587356b02b92b4003489f2e9bf8bc5 /cpukit/rtems | |
parent | bsp/atsam: Fix mbuf allocation (diff) | |
download | rtems-97312fcc6da163d76b69bf8ce68fd791cf014c2a.tar.bz2 |
score: Delete Thread_Wait_information::id
This field was only by the monitor in non-multiprocessing
configurations. Add new field Thread_Wait_information::remote_id in
multiprocessing configurations and use it for the remote procedure call
thread queue.
Add _Thread_Wait_get_id() to obtain the object identifier for debug and
system information tools. Ensure the object layout via static asserts.
Add test cases to sptests/spthreadq01.
Diffstat (limited to '')
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/barrier.h | 4 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/message.h | 4 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/sem.h | 14 | ||||
-rw-r--r-- | cpukit/rtems/src/barrierwait.c | 4 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqreceive.c | 7 | ||||
-rw-r--r-- | cpukit/rtems/src/regiongetsegment.c | 1 | ||||
-rw-r--r-- | cpukit/rtems/src/semobtain.c | 12 |
7 files changed, 31 insertions, 15 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/barrier.h b/cpukit/rtems/include/rtems/rtems/barrier.h index 8c3b9d3022..2eea90fa41 100644 --- a/cpukit/rtems/include/rtems/rtems/barrier.h +++ b/cpukit/rtems/include/rtems/rtems/barrier.h @@ -55,10 +55,10 @@ extern "C" { typedef struct { /** This is used to manage a barrier as an object. */ Objects_Control Object; - /** This is used to specify the attributes of a barrier. */ - rtems_attribute attribute_set; /** This is used to implement the barrier. */ CORE_barrier_Control Barrier; + /** This is used to specify the attributes of a barrier. */ + rtems_attribute attribute_set; } Barrier_Control; /** diff --git a/cpukit/rtems/include/rtems/rtems/message.h b/cpukit/rtems/include/rtems/rtems/message.h index 0fad595277..8ae9e156a1 100644 --- a/cpukit/rtems/include/rtems/rtems/message.h +++ b/cpukit/rtems/include/rtems/rtems/message.h @@ -53,10 +53,10 @@ extern "C" { typedef struct { /** This field is the inherited object characteristics. */ Objects_Control Object; - /** This field is the attribute set as defined by the API. */ - rtems_attribute attribute_set; /** This field is the instance of the SuperCore Message Queue. */ CORE_message_queue_Control message_queue; + /** This field is the attribute set as defined by the API. */ + rtems_attribute attribute_set; } Message_queue_Control; /** diff --git a/cpukit/rtems/include/rtems/rtems/sem.h b/cpukit/rtems/include/rtems/rtems/sem.h index 6c71a9d433..b3950a2939 100644 --- a/cpukit/rtems/include/rtems/rtems/sem.h +++ b/cpukit/rtems/include/rtems/rtems/sem.h @@ -65,13 +65,6 @@ typedef struct { Objects_Control Object; /** - * This is the Classic API attribute provided to the create directive. - * It is translated into behavioral attributes on the SuperCore Semaphore - * or Mutex instance. - */ - rtems_attribute attribute_set; - - /** * This contains the memory associated with the SuperCore Semaphore or * Mutex instance that provides the primary functionality of each * Classic API Semaphore instance. The structure used is dependent @@ -97,6 +90,13 @@ typedef struct { MRSP_Control mrsp; #endif } Core_control; + + /** + * This is the Classic API attribute provided to the create directive. + * It is translated into behavioral attributes on the SuperCore Semaphore + * or Mutex instance. + */ + rtems_attribute attribute_set; } Semaphore_Control; /** diff --git a/cpukit/rtems/src/barrierwait.c b/cpukit/rtems/src/barrierwait.c index fa7ab8edf5..3a3059363c 100644 --- a/cpukit/rtems/src/barrierwait.c +++ b/cpukit/rtems/src/barrierwait.c @@ -22,7 +22,9 @@ #include <rtems/rtems/status.h> #include <rtems/rtems/support.h> #include <rtems/rtems/barrierimpl.h> -#include <rtems/score/thread.h> +#include <rtems/score/threadimpl.h> + +THREAD_WAIT_QUEUE_OBJECT_ASSERT( Barrier_Control, Barrier.Wait_queue ); rtems_status_code rtems_barrier_wait( rtems_id id, diff --git a/cpukit/rtems/src/msgqreceive.c b/cpukit/rtems/src/msgqreceive.c index 2b9a4e742b..3b4945e776 100644 --- a/cpukit/rtems/src/msgqreceive.c +++ b/cpukit/rtems/src/msgqreceive.c @@ -22,7 +22,7 @@ #include <rtems/score/chain.h> #include <rtems/score/isr.h> #include <rtems/score/coremsgimpl.h> -#include <rtems/score/thread.h> +#include <rtems/score/threadimpl.h> #include <rtems/score/wkspace.h> #include <rtems/rtems/status.h> #include <rtems/rtems/attrimpl.h> @@ -30,6 +30,11 @@ #include <rtems/rtems/optionsimpl.h> #include <rtems/rtems/support.h> +THREAD_WAIT_QUEUE_OBJECT_ASSERT( + Message_queue_Control, + message_queue.Wait_queue +); + rtems_status_code rtems_message_queue_receive( rtems_id id, void *buffer, diff --git a/cpukit/rtems/src/regiongetsegment.c b/cpukit/rtems/src/regiongetsegment.c index b040ebe2d3..0d1ac574dd 100644 --- a/cpukit/rtems/src/regiongetsegment.c +++ b/cpukit/rtems/src/regiongetsegment.c @@ -75,7 +75,6 @@ rtems_status_code rtems_region_get_segment( _Thread_Disable_dispatch(); _RTEMS_Unlock_allocator(); - executing->Wait.id = id; executing->Wait.count = size; executing->Wait.return_argument = segment; diff --git a/cpukit/rtems/src/semobtain.c b/cpukit/rtems/src/semobtain.c index bda39fa80e..0b43af43d8 100644 --- a/cpukit/rtems/src/semobtain.c +++ b/cpukit/rtems/src/semobtain.c @@ -27,10 +27,20 @@ #include <rtems/rtems/semimpl.h> #include <rtems/score/coremuteximpl.h> #include <rtems/score/coresemimpl.h> -#include <rtems/score/thread.h> +#include <rtems/score/threadimpl.h> #include <rtems/score/interr.h> +THREAD_WAIT_QUEUE_OBJECT_ASSERT( + Semaphore_Control, + Core_control.mutex.Wait_queue +); + +THREAD_WAIT_QUEUE_OBJECT_ASSERT( + Semaphore_Control, + Core_control.semaphore.Wait_queue +); + rtems_status_code rtems_semaphore_obtain( rtems_id id, rtems_option option_set, |