summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-23 10:33:51 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-28 06:19:52 +0200
commit69b4fe592fb26f3421add3c564677d78022bcf5a (patch)
treec77f799fdd0fc92795b98820009896c35b3dde97 /cpukit/score
parentscore: Improve _CORE_message_queue_Initialize() (diff)
downloadrtems-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.c13
-rw-r--r--cpukit/score/src/coremsginsert.c20
-rw-r--r--cpukit/score/src/coremsgseize.c10
-rw-r--r--cpukit/score/src/coremsgsubmit.c4
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 );