summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems/src/msgqcreate.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-23 10:09:37 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2020-09-28 06:19:52 +0200
commit5bc7c3724fbb06d934401400ac5922bcae2c6e95 (patch)
tree7857429e00f8e495ed5ae3317c62e1a15458f374 /cpukit/rtems/src/msgqcreate.c
parentscore: Gather message queue control initialization (diff)
downloadrtems-5bc7c3724fbb06d934401400ac5922bcae2c6e95.tar.bz2
score: Improve _CORE_message_queue_Initialize()
Return a status code and differentiate between error conditions. Update #4007.
Diffstat (limited to 'cpukit/rtems/src/msgqcreate.c')
-rw-r--r--cpukit/rtems/src/msgqcreate.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/cpukit/rtems/src/msgqcreate.c b/cpukit/rtems/src/msgqcreate.c
index 3741347cc9..79b198199e 100644
--- a/cpukit/rtems/src/msgqcreate.c
+++ b/cpukit/rtems/src/msgqcreate.c
@@ -41,6 +41,7 @@ rtems_status_code rtems_message_queue_create(
{
Message_queue_Control *the_message_queue;
CORE_message_queue_Disciplines discipline;
+ Status_Control status;
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
@@ -107,12 +108,14 @@ rtems_status_code rtems_message_queue_create(
else
discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
- if ( ! _CORE_message_queue_Initialize(
- &the_message_queue->message_queue,
- discipline,
- count,
- max_message_size
- ) ) {
+ status = _CORE_message_queue_Initialize(
+ &the_message_queue->message_queue,
+ discipline,
+ count,
+ max_message_size
+ );
+
+ if ( status != STATUS_SUCCESSFUL ) {
#if defined(RTEMS_MULTIPROCESSING)
if ( is_global )
_Objects_MP_Close(
@@ -121,7 +124,7 @@ rtems_status_code rtems_message_queue_create(
_Message_queue_Free( the_message_queue );
_Objects_Allocator_unlock();
- return RTEMS_UNSATISFIED;
+ return STATUS_GET_CLASSIC( status );
}
_Objects_Open(