diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-23 10:33:51 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-28 06:19:52 +0200 |
commit | 69b4fe592fb26f3421add3c564677d78022bcf5a (patch) | |
tree | c77f799fdd0fc92795b98820009896c35b3dde97 /cpukit/score | |
parent | score: Improve _CORE_message_queue_Initialize() (diff) | |
download | rtems-69b4fe592fb26f3421add3c564677d78022bcf5a.tar.bz2 |
score: Simplify CORE_message_queue_Buffer
Merge CORE_message_queue_Buffer structure into
CORE_message_queue_Buffer_control.
Use a zero-length array for the actual message buffer. This reduces the
structure size on all targets.
Update #4007.
Diffstat (limited to 'cpukit/score')
-rw-r--r-- | cpukit/score/src/coremsg.c | 13 | ||||
-rw-r--r-- | cpukit/score/src/coremsginsert.c | 20 | ||||
-rw-r--r-- | cpukit/score/src/coremsgseize.c | 10 | ||||
-rw-r--r-- | cpukit/score/src/coremsgsubmit.c | 4 |
4 files changed, 24 insertions, 23 deletions
diff --git a/cpukit/score/src/coremsg.c b/cpukit/score/src/coremsg.c index c86f2c28e2..f7caca1ebf 100644 --- a/cpukit/score/src/coremsg.c +++ b/cpukit/score/src/coremsg.c @@ -23,8 +23,13 @@ #include <rtems/score/wkspace.h> #define MESSAGE_SIZE_LIMIT \ - ( SIZE_MAX - sizeof( uintptr_t ) + 1 \ - - sizeof( CORE_message_queue_Buffer_control ) ) + ( SIZE_MAX - sizeof( uintptr_t ) + 1 - sizeof( CORE_message_queue_Buffer ) ) + +RTEMS_STATIC_ASSERT( + offsetof( CORE_message_queue_Buffer, buffer ) + == sizeof( CORE_message_queue_Buffer ), + CORE_MESSAGE_QUEUE_BUFFER_OFFSET +); Status_Control _CORE_message_queue_Initialize( CORE_message_queue_Control *the_message_queue, @@ -43,8 +48,8 @@ Status_Control _CORE_message_queue_Initialize( buffer_size = RTEMS_ALIGN_UP( maximum_message_size, sizeof( uintptr_t ) ); _Assert( buffer_size >= maximum_message_size ); - buffer_size += sizeof( CORE_message_queue_Buffer_control ); - _Assert( buffer_size >= sizeof( CORE_message_queue_Buffer_control ) ); + buffer_size += sizeof( CORE_message_queue_Buffer ); + _Assert( buffer_size >= sizeof( CORE_message_queue_Buffer ) ); /* Make sure the memory allocation size computation does not overflow */ if ( maximum_pending_messages > SIZE_MAX / buffer_size ) { diff --git a/cpukit/score/src/coremsginsert.c b/cpukit/score/src/coremsginsert.c index 850e1cd457..1a2abc3c96 100644 --- a/cpukit/score/src/coremsginsert.c +++ b/cpukit/score/src/coremsginsert.c @@ -27,11 +27,11 @@ static bool _CORE_message_queue_Order( const Chain_Node *right ) { - const int *left_priority; - const CORE_message_queue_Buffer_control *right_message; + const int *left_priority; + const CORE_message_queue_Buffer *right_message; left_priority = (const int *) left; - right_message = (const CORE_message_queue_Buffer_control *) right; + right_message = (const CORE_message_queue_Buffer *) right; return *left_priority < _CORE_message_queue_Get_message_priority( right_message ); @@ -39,20 +39,20 @@ static bool _CORE_message_queue_Order( #endif void _CORE_message_queue_Insert_message( - CORE_message_queue_Control *the_message_queue, - CORE_message_queue_Buffer_control *the_message, - const void *content_source, - size_t content_size, - CORE_message_queue_Submit_types submit_type + CORE_message_queue_Control *the_message_queue, + CORE_message_queue_Buffer *the_message, + const void *content_source, + size_t content_size, + CORE_message_queue_Submit_types submit_type ) { Chain_Control *pending_messages; - the_message->Contents.size = content_size; + the_message->size = content_size; _CORE_message_queue_Copy_buffer( content_source, - the_message->Contents.buffer, + the_message->buffer, content_size ); diff --git a/cpukit/score/src/coremsgseize.c b/cpukit/score/src/coremsgseize.c index bb78e28530..b2b9dbabdb 100644 --- a/cpukit/score/src/coremsgseize.c +++ b/cpukit/score/src/coremsgseize.c @@ -33,20 +33,16 @@ Status_Control _CORE_message_queue_Seize( Thread_queue_Context *queue_context ) { - CORE_message_queue_Buffer_control *the_message; + CORE_message_queue_Buffer *the_message; the_message = _CORE_message_queue_Get_pending_message( the_message_queue ); if ( the_message != NULL ) { the_message_queue->number_of_pending_messages -= 1; - *size_p = the_message->Contents.size; + *size_p = the_message->size; executing->Wait.count = _CORE_message_queue_Get_message_priority( the_message ); - _CORE_message_queue_Copy_buffer( - the_message->Contents.buffer, - buffer, - *size_p - ); + _CORE_message_queue_Copy_buffer( the_message->buffer, buffer, *size_p ); #if !defined(RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND) /* diff --git a/cpukit/score/src/coremsgsubmit.c b/cpukit/score/src/coremsgsubmit.c index dd01f4aa7a..77fe30c0dd 100644 --- a/cpukit/score/src/coremsgsubmit.c +++ b/cpukit/score/src/coremsgsubmit.c @@ -36,8 +36,8 @@ Status_Control _CORE_message_queue_Submit( Thread_queue_Context *queue_context ) { - CORE_message_queue_Buffer_control *the_message; - Thread_Control *the_thread; + CORE_message_queue_Buffer *the_message; + Thread_Control *the_thread; if ( size > the_message_queue->maximum_message_size ) { _CORE_message_queue_Release( the_message_queue, queue_context ); |