summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-27 13:26:53 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-05-30 16:16:21 +0200
commit0e1d11f3f0f02768ced350fcb53056c55f0c545b (patch)
tree1f7062ab130bf78d924a7e34eec62864f3d8ae6e /cpukit/rtems
parentscore: Adjust thread queue layout (diff)
downloadrtems-0e1d11f3f0f02768ced350fcb53056c55f0c545b.tar.bz2
score: Add _Thread_queue_Context_set_MP_callout()
Add _Thread_queue_Context_set_MP_callout() to simplify _Thread_queue_Context_initialize(). This makes it possible to more easily add additional fields to Thread_queue_Context.
Diffstat (limited to '')
-rw-r--r--cpukit/rtems/include/rtems/rtems/barrierimpl.h2
-rw-r--r--cpukit/rtems/include/rtems/rtems/messageimpl.h20
-rw-r--r--cpukit/rtems/include/rtems/rtems/semimpl.h20
-rw-r--r--cpukit/rtems/src/msgqbroadcast.c10
-rw-r--r--cpukit/rtems/src/msgqdelete.c10
-rw-r--r--cpukit/rtems/src/msgqflush.c2
-rw-r--r--cpukit/rtems/src/msgqgetnumberpending.c2
-rw-r--r--cpukit/rtems/src/msgqreceive.c2
-rw-r--r--cpukit/rtems/src/msgqsend.c10
-rw-r--r--cpukit/rtems/src/msgqurgent.c10
-rw-r--r--cpukit/rtems/src/semdelete.c6
-rw-r--r--cpukit/rtems/src/semflush.c11
-rw-r--r--cpukit/rtems/src/semobtain.c2
-rw-r--r--cpukit/rtems/src/semrelease.c11
-rw-r--r--cpukit/rtems/src/semsetpriority.c2
15 files changed, 47 insertions, 73 deletions
diff --git a/cpukit/rtems/include/rtems/rtems/barrierimpl.h b/cpukit/rtems/include/rtems/rtems/barrierimpl.h
index 6a98917012..91834b8362 100644
--- a/cpukit/rtems/include/rtems/rtems/barrierimpl.h
+++ b/cpukit/rtems/include/rtems/rtems/barrierimpl.h
@@ -74,7 +74,7 @@ RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Context_initialize( queue_context, NULL );
+ _Thread_queue_Context_initialize( queue_context );
return (Barrier_Control *)
_Objects_Get( id, &queue_context->Lock_context, &_Barrier_Information );
}
diff --git a/cpukit/rtems/include/rtems/rtems/messageimpl.h b/cpukit/rtems/include/rtems/rtems/messageimpl.h
index c561ff9a4b..9c1da39975 100644
--- a/cpukit/rtems/include/rtems/rtems/messageimpl.h
+++ b/cpukit/rtems/include/rtems/rtems/messageimpl.h
@@ -87,16 +87,12 @@ RTEMS_INLINE_ROUTINE void _Message_queue_Free (
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
}
-RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Do_get(
- Objects_Id id,
- Thread_queue_Context *queue_context
-#if defined(RTEMS_MULTIPROCESSING)
- ,
- Thread_queue_MP_callout mp_callout
-#endif
+RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get(
+ Objects_Id id,
+ Thread_queue_Context *queue_context
)
{
- _Thread_queue_Context_initialize( queue_context, mp_callout );
+ _Thread_queue_Context_initialize( queue_context );
return (Message_queue_Control *) _Objects_Get(
id,
&queue_context->Lock_context,
@@ -104,14 +100,6 @@ RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Do_get(
);
}
-#if defined(RTEMS_MULTIPROCESSING)
- #define _Message_queue_Get( id, queue_context, mp_callout ) \
- _Message_queue_Do_get( id, queue_context, mp_callout )
-#else
- #define _Message_queue_Get( id, queue_context, mp_callout ) \
- _Message_queue_Do_get( id, queue_context )
-#endif
-
RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Allocate( void )
{
return (Message_queue_Control *)
diff --git a/cpukit/rtems/include/rtems/rtems/semimpl.h b/cpukit/rtems/include/rtems/rtems/semimpl.h
index 21e16e99d0..a498927691 100644
--- a/cpukit/rtems/include/rtems/rtems/semimpl.h
+++ b/cpukit/rtems/include/rtems/rtems/semimpl.h
@@ -58,16 +58,12 @@ RTEMS_INLINE_ROUTINE void _Semaphore_Free (
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
}
-RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Do_get(
- Objects_Id id,
- Thread_queue_Context *queue_context
-#if defined(RTEMS_MULTIPROCESSING)
- ,
- Thread_queue_MP_callout mp_callout
-#endif
+RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get(
+ Objects_Id id,
+ Thread_queue_Context *queue_context
)
{
- _Thread_queue_Context_initialize( queue_context, mp_callout );
+ _Thread_queue_Context_initialize( queue_context );
return (Semaphore_Control *) _Objects_Get(
id,
&queue_context->Lock_context,
@@ -75,14 +71,6 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Do_get(
);
}
-#if defined(RTEMS_MULTIPROCESSING)
- #define _Semaphore_Get( id, queue_context, mp_callout ) \
- _Semaphore_Do_get( id, queue_context, mp_callout )
-#else
- #define _Semaphore_Get( id, queue_context, mp_callout ) \
- _Semaphore_Do_get( id, queue_context )
-#endif
-
#ifdef __cplusplus
}
#endif
diff --git a/cpukit/rtems/src/msgqbroadcast.c b/cpukit/rtems/src/msgqbroadcast.c
index cc38be96f8..4c4e04e097 100644
--- a/cpukit/rtems/src/msgqbroadcast.c
+++ b/cpukit/rtems/src/msgqbroadcast.c
@@ -40,11 +40,7 @@ rtems_status_code rtems_message_queue_broadcast(
return RTEMS_INVALID_ADDRESS;
}
- the_message_queue = _Message_queue_Get(
- id,
- &queue_context,
- _Message_queue_Core_message_queue_mp_support
- );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
@@ -54,6 +50,10 @@ rtems_status_code rtems_message_queue_broadcast(
#endif
}
+ _Thread_queue_Context_set_MP_callout(
+ &queue_context,
+ _Message_queue_Core_message_queue_mp_support
+ );
status = _CORE_message_queue_Broadcast(
&the_message_queue->message_queue,
buffer,
diff --git a/cpukit/rtems/src/msgqdelete.c b/cpukit/rtems/src/msgqdelete.c
index 94175e6993..7a3e40a4b5 100644
--- a/cpukit/rtems/src/msgqdelete.c
+++ b/cpukit/rtems/src/msgqdelete.c
@@ -29,11 +29,7 @@ rtems_status_code rtems_message_queue_delete(
Thread_queue_Context queue_context;
_Objects_Allocator_lock();
- the_message_queue = _Message_queue_Get(
- id,
- &queue_context,
- _Message_queue_MP_Send_object_was_deleted
- );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
_Objects_Allocator_unlock();
@@ -54,6 +50,10 @@ rtems_status_code rtems_message_queue_delete(
_Objects_Close( &_Message_queue_Information, &the_message_queue->Object );
+ _Thread_queue_Context_set_MP_callout(
+ &queue_context,
+ _Message_queue_MP_Send_object_was_deleted
+ );
_CORE_message_queue_Close(
&the_message_queue->message_queue,
&queue_context
diff --git a/cpukit/rtems/src/msgqflush.c b/cpukit/rtems/src/msgqflush.c
index b4419d173d..16f743234f 100644
--- a/cpukit/rtems/src/msgqflush.c
+++ b/cpukit/rtems/src/msgqflush.c
@@ -32,7 +32,7 @@ rtems_status_code rtems_message_queue_flush(
return RTEMS_INVALID_ADDRESS;
}
- the_message_queue = _Message_queue_Get( id, &queue_context, NULL );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
diff --git a/cpukit/rtems/src/msgqgetnumberpending.c b/cpukit/rtems/src/msgqgetnumberpending.c
index d2f7820553..2a49711e87 100644
--- a/cpukit/rtems/src/msgqgetnumberpending.c
+++ b/cpukit/rtems/src/msgqgetnumberpending.c
@@ -32,7 +32,7 @@ rtems_status_code rtems_message_queue_get_number_pending(
return RTEMS_INVALID_ADDRESS;
}
- the_message_queue = _Message_queue_Get( id, &queue_context, NULL );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
diff --git a/cpukit/rtems/src/msgqreceive.c b/cpukit/rtems/src/msgqreceive.c
index 66e38f7cae..75c15beb6a 100644
--- a/cpukit/rtems/src/msgqreceive.c
+++ b/cpukit/rtems/src/msgqreceive.c
@@ -45,7 +45,7 @@ rtems_status_code rtems_message_queue_receive(
return RTEMS_INVALID_ADDRESS;
}
- the_message_queue = _Message_queue_Get( id, &queue_context, NULL );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
diff --git a/cpukit/rtems/src/msgqsend.c b/cpukit/rtems/src/msgqsend.c
index 9489081a79..7968281d59 100644
--- a/cpukit/rtems/src/msgqsend.c
+++ b/cpukit/rtems/src/msgqsend.c
@@ -35,11 +35,7 @@ rtems_status_code rtems_message_queue_send(
return RTEMS_INVALID_ADDRESS;
}
- the_message_queue = _Message_queue_Get(
- id,
- &queue_context,
- _Message_queue_Core_message_queue_mp_support
- );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
@@ -53,6 +49,10 @@ rtems_status_code rtems_message_queue_send(
&the_message_queue->message_queue,
&queue_context
);
+ _Thread_queue_Context_set_MP_callout(
+ &queue_context,
+ _Message_queue_Core_message_queue_mp_support
+ );
status = _CORE_message_queue_Send(
&the_message_queue->message_queue,
buffer,
diff --git a/cpukit/rtems/src/msgqurgent.c b/cpukit/rtems/src/msgqurgent.c
index 6522d8fb1a..6c6379d7d8 100644
--- a/cpukit/rtems/src/msgqurgent.c
+++ b/cpukit/rtems/src/msgqurgent.c
@@ -35,11 +35,7 @@ rtems_status_code rtems_message_queue_urgent(
return RTEMS_INVALID_ADDRESS;
}
- the_message_queue = _Message_queue_Get(
- id,
- &queue_context,
- _Message_queue_Core_message_queue_mp_support
- );
+ the_message_queue = _Message_queue_Get( id, &queue_context );
if ( the_message_queue == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
@@ -53,6 +49,10 @@ rtems_status_code rtems_message_queue_urgent(
&the_message_queue->message_queue,
&queue_context
);
+ _Thread_queue_Context_set_MP_callout(
+ &queue_context,
+ _Message_queue_Core_message_queue_mp_support
+ );
status = _CORE_message_queue_Urgent(
&the_message_queue->message_queue,
buffer,
diff --git a/cpukit/rtems/src/semdelete.c b/cpukit/rtems/src/semdelete.c
index 405c8055c3..13f2bf0268 100644
--- a/cpukit/rtems/src/semdelete.c
+++ b/cpukit/rtems/src/semdelete.c
@@ -31,11 +31,7 @@ rtems_status_code rtems_semaphore_delete(
rtems_attribute attribute_set;
_Objects_Allocator_lock();
- the_semaphore = _Semaphore_Get(
- id,
- &queue_context,
- _Semaphore_MP_Send_object_was_deleted
- );
+ the_semaphore = _Semaphore_Get( id, &queue_context );
if ( the_semaphore == NULL ) {
_Objects_Allocator_unlock();
diff --git a/cpukit/rtems/src/semflush.c b/cpukit/rtems/src/semflush.c
index 73305354ec..07d4aa98b4 100644
--- a/cpukit/rtems/src/semflush.c
+++ b/cpukit/rtems/src/semflush.c
@@ -27,11 +27,7 @@ rtems_status_code rtems_semaphore_flush( rtems_id id )
Thread_queue_Context queue_context;
rtems_attribute attribute_set;
- the_semaphore = _Semaphore_Get(
- id,
- &queue_context,
- _Semaphore_MP_Send_object_was_deleted
- );
+ the_semaphore = _Semaphore_Get( id, &queue_context );
if ( the_semaphore == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
@@ -45,6 +41,11 @@ rtems_status_code rtems_semaphore_flush( rtems_id id )
attribute_set = the_semaphore->attribute_set;
+ _Thread_queue_Context_set_MP_callout(
+ &queue_context,
+ _Semaphore_MP_Send_object_was_deleted
+ );
+
#if defined(RTEMS_SMP)
if ( _Attributes_Is_multiprocessor_resource_sharing( attribute_set ) ) {
_ISR_lock_ISR_enable( &queue_context.Lock_context );
diff --git a/cpukit/rtems/src/semobtain.c b/cpukit/rtems/src/semobtain.c
index 527f7ea03f..06c2e1009e 100644
--- a/cpukit/rtems/src/semobtain.c
+++ b/cpukit/rtems/src/semobtain.c
@@ -46,7 +46,7 @@ rtems_status_code rtems_semaphore_obtain(
bool wait;
Status_Control status;
- the_semaphore = _Semaphore_Get( id, &queue_context, NULL );
+ the_semaphore = _Semaphore_Get( id, &queue_context );
if ( the_semaphore == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
diff --git a/cpukit/rtems/src/semrelease.c b/cpukit/rtems/src/semrelease.c
index 007914c09a..10fe743480 100644
--- a/cpukit/rtems/src/semrelease.c
+++ b/cpukit/rtems/src/semrelease.c
@@ -32,11 +32,7 @@ rtems_status_code rtems_semaphore_release( rtems_id id )
rtems_attribute attribute_set;
Status_Control status;
- the_semaphore = _Semaphore_Get(
- id,
- &queue_context,
- _Semaphore_Core_mutex_mp_support
- );
+ the_semaphore = _Semaphore_Get( id, &queue_context );
if ( the_semaphore == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)
@@ -46,6 +42,11 @@ rtems_status_code rtems_semaphore_release( rtems_id id )
#endif
}
+ _Thread_queue_Context_set_MP_callout(
+ &queue_context,
+ _Semaphore_Core_mutex_mp_support
+ );
+
attribute_set = the_semaphore->attribute_set;
#if defined(RTEMS_SMP)
if ( _Attributes_Is_multiprocessor_resource_sharing( attribute_set ) ) {
diff --git a/cpukit/rtems/src/semsetpriority.c b/cpukit/rtems/src/semsetpriority.c
index 4deee3d189..ee6614af0f 100644
--- a/cpukit/rtems/src/semsetpriority.c
+++ b/cpukit/rtems/src/semsetpriority.c
@@ -103,7 +103,7 @@ rtems_status_code rtems_semaphore_set_priority(
return RTEMS_INVALID_ID;
}
- the_semaphore = _Semaphore_Get( semaphore_id, &queue_context, NULL );
+ the_semaphore = _Semaphore_Get( semaphore_id, &queue_context );
if ( the_semaphore == NULL ) {
#if defined(RTEMS_MULTIPROCESSING)