diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-27 13:26:53 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-30 16:16:21 +0200 |
commit | 0e1d11f3f0f02768ced350fcb53056c55f0c545b (patch) | |
tree | 1f7062ab130bf78d924a7e34eec62864f3d8ae6e /cpukit/rtems | |
parent | score: Adjust thread queue layout (diff) | |
download | rtems-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.h | 2 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/messageimpl.h | 20 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/semimpl.h | 20 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqbroadcast.c | 10 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqdelete.c | 10 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqflush.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqgetnumberpending.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqreceive.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqsend.c | 10 | ||||
-rw-r--r-- | cpukit/rtems/src/msgqurgent.c | 10 | ||||
-rw-r--r-- | cpukit/rtems/src/semdelete.c | 6 | ||||
-rw-r--r-- | cpukit/rtems/src/semflush.c | 11 | ||||
-rw-r--r-- | cpukit/rtems/src/semobtain.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semrelease.c | 11 | ||||
-rw-r--r-- | cpukit/rtems/src/semsetpriority.c | 2 |
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) |