summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-12 14:15:50 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-12 14:15:50 +0000
commit3c49a508aa3d554f724e28d420d0cb62bd6d93aa (patch)
treebe637bfd5063b9a09e551c6905154c613217638e /c/src
parentRemoved redundant line. (diff)
downloadrtems-3c49a508aa3d554f724e28d420d0cb62bd6d93aa.tar.bz2
Cleaned up style.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/exec/itron/src/msgbuffer.c482
1 files changed, 239 insertions, 243 deletions
diff --git a/c/src/exec/itron/src/msgbuffer.c b/c/src/exec/itron/src/msgbuffer.c
index 4711ddbea9..0d3fb7936b 100644
--- a/c/src/exec/itron/src/msgbuffer.c
+++ b/c/src/exec/itron/src/msgbuffer.c
@@ -1,4 +1,6 @@
/*
+ * ITRON Message Buffer Manager
+ *
* 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.
@@ -12,22 +14,23 @@
#include <rtems/itron/task.h>
ER _ITRON_Message_buffer_Translate_core_message_buffer_return_code(
- CORE_message_queue_Status status)
+ CORE_message_queue_Status status
+)
{
- switch (status) {
+ switch (status) {
case CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL:
- return E_OK;
+ return E_OK;
case CORE_MESSAGE_QUEUE_STATUS_TOO_MANY:
- return E_TMOUT;
+ return E_TMOUT;
case CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE:
- return E_PAR;
+ return E_PAR;
case CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT:
- return E_TMOUT;
+ return E_TMOUT;
case CORE_MESSAGE_QUEUE_STATUS_TIMEOUT:
- return E_TMOUT;
+ return E_TMOUT;
default:
- return E_ID;
- }
+ return E_ID;
+ }
}
/*
@@ -43,31 +46,30 @@ ER _ITRON_Message_buffer_Translate_core_message_buffer_return_code(
*/
void _ITRON_Message_buffer_Manager_initialization(
- unsigned32 maximum_message_buffers
- )
+ unsigned32 maximum_message_buffers
+)
{
- _Objects_Initialize_information(
- &_ITRON_Message_buffer_Information, /* object information table */
- OBJECTS_ITRON_MESSAGE_BUFFERS, /* object class */
- FALSE, /* TRUE if this is a
- global object class */
- maximum_message_buffers, /* maximum objects of this class */
- sizeof( ITRON_Message_buffer_Control ), /* size of this
- object's control
- block */
- FALSE, /* TRUE if names for this
- object are strings */
- RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each
- object's name */
- FALSE /* TRUE if this class is threads */
- );
-
- /*
- * Register the MP Process Packet routine.
- *
- * NOTE: No MP Support YET in RTEMS ITRON implementation.
- */
-
+ _Objects_Initialize_information(
+ &_ITRON_Message_buffer_Information, /* object information table */
+ OBJECTS_ITRON_MESSAGE_BUFFERS, /* object class */
+ FALSE, /* TRUE if this is a
+ global object class */
+ maximum_message_buffers, /* maximum objects of this class */
+ sizeof( ITRON_Message_buffer_Control ), /* size of this
+ object's control
+ block */
+ FALSE, /* TRUE if names for this
+ object are strings */
+ RTEMS_MAXIMUM_NAME_LENGTH, /* maximum length of each
+ object's name */
+ FALSE /* TRUE if this class is threads */
+ );
+
+ /*
+ * Register the MP Process Packet routine.
+ *
+ * NOTE: No MP Support YET in RTEMS ITRON implementation.
+ */
}
/*
@@ -75,71 +77,71 @@ void _ITRON_Message_buffer_Manager_initialization(
*/
ER cre_mbf(
- ID mbfid,
- T_CMBF *pk_cmbf
- )
+ ID mbfid,
+ T_CMBF *pk_cmbf
+)
{
- CORE_message_queue_Attributes the_message_queue_attributes;
- ITRON_Message_buffer_Control *the_message_buffer;
+ CORE_message_queue_Attributes the_message_queue_attributes;
+ ITRON_Message_buffer_Control *the_message_buffer;
- /*
- * Bad pointer to the attributes structure
- */
+ /*
+ * Bad pointer to the attributes structure
+ */
- if ( !pk_cmbf )
- return E_PAR;
+ if ( !pk_cmbf )
+ return E_PAR;
- /*
- * Bits were set that were note defined.
- */
+ /*
+ * Bits were set that were note defined.
+ */
- if (pk_cmbf->mbfatr & ~(TA_TPRI))
- return E_RSATR;
+ 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 < 0 || pk_cmbf->maxmsz < 0)
+ return E_PAR;
- if (pk_cmbf->bufsz < pk_cmbf->maxmsz)
- 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);
- }
+ _Thread_Disable_dispatch(); /* prevents deletion */
- 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 );
+ 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 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();
+ _Thread_Enable_dispatch();
- return E_OK;
+ return E_OK;
}
/*
@@ -147,37 +149,36 @@ ER cre_mbf(
*/
ER del_mbf(
- ID mbfid
- )
+ ID mbfid
+)
{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
+ ITRON_Message_buffer_Control *the_message_buffer;
+ Objects_Locations location;
- the_message_buffer = _ITRON_Message_buffer_Get(mbfid, &location);
-
- switch (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);
+ 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.
- */
+ _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;
+ _Thread_Enable_dispatch();
+ return E_OK;
+ }
+
+ return E_OK;
}
/*
@@ -185,10 +186,10 @@ ER del_mbf(
*/
ER snd_mbf(
- ID mbfid,
- VP msg,
- INT msgsz
- )
+ ID mbfid,
+ VP msg,
+ INT msgsz
+)
{
return E_OK;
}
@@ -198,36 +199,36 @@ ER snd_mbf(
*/
ER psnd_mbf(
- ID mbfid,
- VP msg,
- INT msgsz
- )
+ ID mbfid,
+ VP msg,
+ INT msgsz
+)
{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
- CORE_message_queue_Status status;
+ ITRON_Message_buffer_Control *the_message_buffer;
+ Objects_Locations location;
+ CORE_message_queue_Status status;
- if (msgsz <= 0 || !msg)
- return E_PAR;
+ if (msgsz <= 0 || !msg)
+ return E_PAR;
- the_message_buffer = _ITRON_Message_buffer_Get(mbfid, &location);
- switch (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);
+ 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);
+ 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);
}
/*
@@ -246,13 +247,13 @@ ER psnd_mbf(
*/
ER tsnd_mbf(
- ID mbfid,
- VP msg,
- INT msgsz,
- TMO tmout
- )
+ ID mbfid,
+ VP msg,
+ INT msgsz,
+ TMO tmout
+)
{
- return E_OK;
+ return E_OK;
}
/*
@@ -260,12 +261,12 @@ ER tsnd_mbf(
*/
ER rcv_mbf(
- VP msg,
- INT *p_msgsz,
- ID mbfid
- )
+ VP msg,
+ INT *p_msgsz,
+ ID mbfid
+)
{
- return trcv_mbf(msg, p_msgsz, mbfid, TMO_FEVR);
+ return trcv_mbf(msg, p_msgsz, mbfid, TMO_FEVR);
}
/*
@@ -273,12 +274,12 @@ ER rcv_mbf(
*/
ER prcv_mbf(
- VP msg,
- INT *p_msgsz,
- ID mbfid
- )
+ VP msg,
+ INT *p_msgsz,
+ ID mbfid
+)
{
- return trcv_mbf(msg, p_msgsz, mbfid, TMO_POL);
+ return trcv_mbf(msg, p_msgsz, mbfid, TMO_POL);
}
/*
@@ -286,54 +287,52 @@ ER prcv_mbf(
*/
ER trcv_mbf(
- VP msg,
- INT *p_msgsz,
- ID mbfid,
- TMO tmout
- )
+ 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;
+ 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) {
+ 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);
+ 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);
-
+ _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);
}
/*
@@ -351,62 +350,59 @@ ER trcv_mbf(
*/
ER ref_mbf(
- T_RMBF *pk_rmbf,
- ID mbfid
- )
+ T_RMBF *pk_rmbf,
+ ID mbfid
+)
{
- ITRON_Message_buffer_Control *the_message_buffer;
- Objects_Locations location;
+ 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 );
+ 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:
- /*
- * Fill in the size of message to be sent
- */
-
- if(the_message_buffer->message_queue.
- number_of_pending_messages == 0) {
- pk_rmbf->msgsz = 0;
- }
- else {
- CORE_message_queue_Buffer_control *the_message;
- the_message = (CORE_message_queue_Buffer_control*)
- the_message_buffer->message_queue.
- Pending_messages.first;
- pk_rmbf->msgsz = the_message->Contents.size;
- }
+ 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_message_buffer->message_queue.maximum_pending_messages-
- the_message_buffer->message_queue.number_of_pending_messages)*
- the_message_buffer->message_queue.maximum_message_size;
-
-
- /*
- * Fill in whether or not there is a waiting task
- */
-
- if ( !_Thread_queue_First(
- &the_message_buffer->message_queue.Wait_queue ) )
- pk_rmbf->wtsk = FALSE;
- else
- pk_rmbf->wtsk = TRUE;
-
- pk_rmbf->stsk = FALSE;
- _Thread_Enable_dispatch();
- return E_OK;
- }
+ /*
+ * 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;
}