diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2000-01-05 17:06:45 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 2000-01-05 17:06:45 +0000 |
commit | 864ac98aa7f043d71a42f5ac24d8913a9b33d942 (patch) | |
tree | e0e41801ce14bb6257e254ac5d693622c537ab7d /c/src | |
parent | Fixed typos. (diff) | |
download | rtems-864ac98aa7f043d71a42f5ac24d8913a9b33d942.tar.bz2 |
Added routines to translate to and from the core message queue return codes.
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/exec/posix/src/mqueuetranslatereturncode.c | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/c/src/exec/posix/src/mqueuetranslatereturncode.c b/c/src/exec/posix/src/mqueuetranslatereturncode.c new file mode 100644 index 0000000000..2cdb4ab9b0 --- /dev/null +++ b/c/src/exec/posix/src/mqueuetranslatereturncode.c @@ -0,0 +1,68 @@ +/* + * POSIX Message Queue Error Translation + * + * + * COPYRIGHT (c) 1989-1999. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include <pthread.h> +#include <limits.h> +#include <errno.h> +#include <fcntl.h> +#include <mqueue.h> + +#include <rtems/system.h> +#include <rtems/score/watchdog.h> +#include <rtems/posix/seterr.h> +#include <rtems/posix/mqueue.h> +#include <rtems/posix/time.h> + + +/*PAGE + * + * _POSIX_Message_queue_Translate_core_message_queue_return_code + * + * Input parameters: + * the_message_queue_status - message_queue status code to translate + * + * Output parameters: + * rtems status code - translated POSIX status code + * + */ + +int _POSIX_Message_queue_Translate_core_message_queue_return_code( + unsigned32 the_message_queue_status +) +{ + switch ( the_message_queue_status ) { + case CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL: + return 0; + case CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE: + return EMSGSIZE; + case CORE_MESSAGE_QUEUE_STATUS_TOO_MANY: + return EAGAIN; + case CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED: + return ENOSYS; /* XXX */ + case CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT: + return ENOSYS; /* XXX */ + case CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED: + return EBADF; + case CORE_MESSAGE_QUEUE_STATUS_TIMEOUT: + return ENOSYS; /* XXX */ + case THREAD_STATUS_PROXY_BLOCKING: + return ENOSYS; /* XXX */ + } + _Internal_error_Occurred( /* XXX */ + INTERNAL_ERROR_POSIX_API, + TRUE, + the_message_queue_status + ); + return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ +} |