diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-23 16:47:58 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2020-09-28 07:16:01 +0200 |
commit | 4a4f41ed642cd5d9f4056b12d86bbf80e8da983a (patch) | |
tree | 40a7ff0913194c8aa9603dd47625816ae332ce01 /cpukit/score/src/coremsg.c | |
parent | rtems: Remove Message_queue_Control::attribute_set (diff) | |
download | rtems-4a4f41ed642cd5d9f4056b12d86bbf80e8da983a.tar.bz2 |
rtems: Add rtems_message_queue_construct()
In contrast to message queues created by rtems_message_queue_create(), the
message queues constructed by this directive use a user-provided message buffer
storage area.
Add RTEMS_MESSAGE_QUEUE_BUFFER() to define a message buffer type for message
buffer storage areas.
Update #4007.
Diffstat (limited to 'cpukit/score/src/coremsg.c')
-rw-r--r-- | cpukit/score/src/coremsg.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/cpukit/score/src/coremsg.c b/cpukit/score/src/coremsg.c index f7caca1ebf..967ce2355a 100644 --- a/cpukit/score/src/coremsg.c +++ b/cpukit/score/src/coremsg.c @@ -20,7 +20,6 @@ #include <rtems/score/coremsgimpl.h> #include <rtems/score/assert.h> -#include <rtems/score/wkspace.h> #define MESSAGE_SIZE_LIMIT \ ( SIZE_MAX - sizeof( uintptr_t ) + 1 - sizeof( CORE_message_queue_Buffer ) ) @@ -32,10 +31,12 @@ RTEMS_STATIC_ASSERT( ); Status_Control _CORE_message_queue_Initialize( - CORE_message_queue_Control *the_message_queue, - CORE_message_queue_Disciplines discipline, - uint32_t maximum_pending_messages, - size_t maximum_message_size + CORE_message_queue_Control *the_message_queue, + CORE_message_queue_Disciplines discipline, + uint32_t maximum_pending_messages, + size_t maximum_message_size, + CORE_message_queue_Allocate_buffers allocate_buffers, + const void *arg ) { size_t buffer_size; @@ -56,8 +57,10 @@ Status_Control _CORE_message_queue_Initialize( return STATUS_MESSAGE_QUEUE_INVALID_NUMBER; } - the_message_queue->message_buffers = _Workspace_Allocate( - (size_t) maximum_pending_messages * buffer_size + the_message_queue->message_buffers = ( *allocate_buffers )( + the_message_queue, + (size_t) maximum_pending_messages * buffer_size, + arg ); if ( the_message_queue->message_buffers == NULL ) { |