summaryrefslogtreecommitdiffstats
path: root/cpukit/itron/src/msgbuffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/itron/src/msgbuffer.c')
-rw-r--r--cpukit/itron/src/msgbuffer.c354
1 files changed, 0 insertions, 354 deletions
diff --git a/cpukit/itron/src/msgbuffer.c b/cpukit/itron/src/msgbuffer.c
index 0d3fb7936b..2d15b0e5e6 100644
--- a/cpukit/itron/src/msgbuffer.c
+++ b/cpukit/itron/src/msgbuffer.c
@@ -13,26 +13,6 @@
#include <rtems/itron/msgbuffer.h>
#include <rtems/itron/task.h>
-ER _ITRON_Message_buffer_Translate_core_message_buffer_return_code(
- CORE_message_queue_Status status
-)
-{
- switch (status) {
- case CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL:
- return E_OK;
- case CORE_MESSAGE_QUEUE_STATUS_TOO_MANY:
- return E_TMOUT;
- case CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE:
- return E_PAR;
- case CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT:
- return E_TMOUT;
- case CORE_MESSAGE_QUEUE_STATUS_TIMEOUT:
- return E_TMOUT;
- default:
- return E_ID;
- }
-}
-
/*
* _ITRON_Message_buffer_Manager_initialization
*
@@ -72,337 +52,3 @@ void _ITRON_Message_buffer_Manager_initialization(
*/
}
-/*
- * cre_mbf - Create MessageBuffer
- */
-
-ER cre_mbf(
- ID mbfid,
- T_CMBF *pk_cmbf
-)
-{
- CORE_message_queue_Attributes the_message_queue_attributes;
- ITRON_Message_buffer_Control *the_message_buffer;
-
- /*
- * Bad pointer to the attributes structure
- */
-
- if ( !pk_cmbf )
- return E_PAR;
-
- /*
- * Bits were set that were note defined.
- */
-
- if (pk_cmbf->mbfatr & ~(TA_TPRI))
- return E_RSATR;
-
- if (pk_cmbf->bufsz < 0 || pk_cmbf->maxmsz < 0)
- return E_PAR;
-
- if (pk_cmbf->bufsz < pk_cmbf->maxmsz)
- return E_PAR;
-
- _Thread_Disable_dispatch(); /* prevents deletion */
-
- the_message_buffer = _ITRON_Message_buffer_Allocate(mbfid);
- if ( !the_message_buffer ) {
- _Thread_Enable_dispatch();
- return _ITRON_Message_buffer_Clarify_allocation_id_error(mbfid);
- }
-
- if ( pk_cmbf->mbfatr & TA_TPRI )
- the_message_queue_attributes.discipline =
- CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
- else
- the_message_queue_attributes.discipline =
- CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
-
- _CORE_message_queue_Initialize(
- &the_message_buffer->message_queue,
- OBJECTS_ITRON_MESSAGE_BUFFERS,
- &the_message_queue_attributes,
- pk_cmbf->bufsz / pk_cmbf->maxmsz,
- pk_cmbf->maxmsz,
- NULL /* Multiprocessing not supported */
- );
-
- _ITRON_Objects_Open( &_ITRON_Message_buffer_Information,
- &the_message_buffer->Object );
-
- /*
- * If multiprocessing were supported, this is where we would announce
- * the existence of the semaphore to the rest of the system.
- */
-
-#if defined(RTEMS_MULTIPROCESSING)
-#endif
-
- _Thread_Enable_dispatch();
-
- return E_OK;
-}
-
-/*
- * del_mbf - Delete MessageBuffer
- */
-
-ER del_mbf(
- ID mbfid
-)
-{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
-
- the_message_buffer = _ITRON_Message_buffer_Get(mbfid, &location);
- switch (location) {
- case OBJECTS_REMOTE:
- case OBJECTS_ERROR: /* Multiprocessing not supported */
- return _ITRON_Message_buffer_Clarify_get_id_error(mbfid);
-
- case OBJECTS_LOCAL:
- _CORE_message_queue_Flush(&the_message_buffer->message_queue);
- _ITRON_Objects_Close( &_ITRON_Message_buffer_Information,
- &the_message_buffer->Object);
- _ITRON_Message_buffer_Free(the_message_buffer);
-
- /*
- * If multiprocessing were supported, this is where we would announce
- * the existence of the semaphore to the rest of the system.
- */
-
-#if defined(RTEMS_MULTIPROCESSING)
-#endif
- _Thread_Enable_dispatch();
- return E_OK;
- }
-
- return E_OK;
-}
-
-/*
- * snd_mbf - Send Message to MessageBuffer
- */
-
-ER snd_mbf(
- ID mbfid,
- VP msg,
- INT msgsz
-)
-{
- return E_OK;
-}
-
-/*
- * psnd_mbf - Poll and Send Message to MessageBuffer
- */
-
-ER psnd_mbf(
- ID mbfid,
- VP msg,
- INT msgsz
-)
-{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
- CORE_message_queue_Status status;
-
- if (msgsz <= 0 || !msg)
- return E_PAR;
-
- the_message_buffer = _ITRON_Message_buffer_Get(mbfid, &location);
- switch (location) {
- case OBJECTS_REMOTE:
- case OBJECTS_ERROR: /* Multiprocessing not supported */
- return _ITRON_Message_buffer_Clarify_get_id_error(mbfid);
-
- case OBJECTS_LOCAL:
- status = _CORE_message_queue_Submit(
- &the_message_buffer->message_queue,
- msg,
- msgsz,
- the_message_buffer->Object.id,
- NULL,
- CORE_MESSAGE_QUEUE_SEND_REQUEST
- );
- _Thread_Enable_dispatch();
- return
- _ITRON_Message_buffer_Translate_core_message_buffer_return_code(status);
- }
-
- /*
- * If multiprocessing were supported, this is where we would announce
- * the existence of the semaphore to the rest of the system.
- */
-
-#if defined(RTEMS_MULTIPROCESSING)
-#endif
-
- return E_OK;
-}
-
-/*
- * tsnd_mbf - Send Message to MessageBuffer with Timeout
- */
-
-ER tsnd_mbf(
- ID mbfid,
- VP msg,
- INT msgsz,
- TMO tmout
-)
-{
- return E_OK;
-}
-
-/*
- * rcv_mbf - Receive Message from MessageBuffer
- */
-
-ER rcv_mbf(
- VP msg,
- INT *p_msgsz,
- ID mbfid
-)
-{
- return trcv_mbf(msg, p_msgsz, mbfid, TMO_FEVR);
-}
-
-/*
- * prcv_mbf - Poll and Receive Message from MessageBuffer
- */
-
-ER prcv_mbf(
- VP msg,
- INT *p_msgsz,
- ID mbfid
-)
-{
- return trcv_mbf(msg, p_msgsz, mbfid, TMO_POL);
-}
-
-/*
- * trcv_mbf - Receive Message from MessageBuffer with Timeout
- */
-
-ER trcv_mbf(
- VP msg,
- INT *p_msgsz,
- ID mbfid,
- TMO tmout
-)
-{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
- CORE_message_queue_Status status;
- boolean wait;
- Watchdog_Interval interval;
-
- interval = 0;
- if (tmout == TMO_POL) {
- wait = FALSE;
- } else {
- wait = TRUE;
- if (tmout != TMO_FEVR)
- interval = TOD_MILLISECONDS_TO_TICKS(tmout);
- }
-
- if (wait && _ITRON_Is_in_non_task_state() )
- return E_CTX;
-
- if (!p_msgsz || !msg || tmout <= -2)
- return E_PAR;
-
- the_message_buffer = _ITRON_Message_buffer_Get(mbfid, &location);
- switch (location) {
- case OBJECTS_REMOTE:
- case OBJECTS_ERROR: /* Multiprocessing not supported */
- return _ITRON_Message_buffer_Clarify_get_id_error(mbfid);
-
- case OBJECTS_LOCAL:
- _CORE_message_queue_Seize(
- &the_message_buffer->message_queue,
- the_message_buffer->Object.id,
- msg,
- p_msgsz,
- wait,
- interval
- );
- _Thread_Enable_dispatch();
- status = (CORE_message_queue_Status)_Thread_Executing->Wait.return_code;
- return
- _ITRON_Message_buffer_Translate_core_message_buffer_return_code(status);
- }
-
- /*
- * If multiprocessing were supported, this is where we would announce
- * the existence of the semaphore to the rest of the system.
- */
-
-#if defined(RTEMS_MULTIPROCESSING)
-#endif
- return E_OK;
-}
-
-/*
- * ref_mbf - Reference MessageBuffer Status
- */
-
-ER ref_mbf(
- T_RMBF *pk_rmbf,
- ID mbfid
-)
-{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
- CORE_message_queue_Control *the_core_msgq;
-
- if ( !pk_rmbf )
- return E_PAR; /* XXX check this error code */
-
- the_message_buffer = _ITRON_Message_buffer_Get( mbfid, &location );
- switch ( location ) {
- case OBJECTS_REMOTE: /* Multiprocessing not supported */
- case OBJECTS_ERROR:
- return _ITRON_Message_buffer_Clarify_get_id_error( mbfid );
-
- case OBJECTS_LOCAL:
- the_core_msgq = &the_message_buffer->message_queue;
-
- /*
- * Fill in the size of message to be sent
- */
-
- if (the_core_msgq->number_of_pending_messages == 0) {
- pk_rmbf->msgsz = 0;
- } else {
- pk_rmbf->msgsz = ((CORE_message_queue_Buffer_control *)
- the_core_msgq->Pending_messages.first)->Contents.size;
- }
-
- /*
- * Fill in the size of free buffer
- */
-
- pk_rmbf->frbufsz =
- (the_core_msgq->maximum_pending_messages -
- the_core_msgq->number_of_pending_messages) *
- the_core_msgq->maximum_message_size;
-
-
- /*
- * Fill in whether or not there is a waiting task
- */
-
- if ( !_Thread_queue_First(&the_core_msgq->Wait_queue ) )
- pk_rmbf->wtsk = FALSE;
- else
- pk_rmbf->wtsk = TRUE;
-
- pk_rmbf->stsk = FALSE;
- _Thread_Enable_dispatch();
- return E_OK;
- }
- return E_OK;
-}