source: rtems/cpukit/itron/src/cre_mbx.c @ e49f9e6b

4.104.114.84.95
Last change on this file since e49f9e6b was e49f9e6b, checked in by Joel Sherrill <joel.sherrill@…>, on 09/04/03 at 18:54:02

2003-09-04 Joel Sherrill <joel@…>

  • include/itron.h, include/itronsys/eventflags.h, include/itronsys/fmempool.h, include/itronsys/intr.h, include/itronsys/mbox.h, include/itronsys/msgbuffer.h, include/itronsys/network.h, include/itronsys/port.h, include/itronsys/semaphore.h, include/itronsys/status.h, include/itronsys/sysmgmt.h, include/itronsys/task.h, include/itronsys/time.h, include/itronsys/types.h, include/itronsys/vmempool.h, include/rtems/itron/config.h, include/rtems/itron/eventflags.h, include/rtems/itron/fmempool.h, include/rtems/itron/intr.h, include/rtems/itron/itronapi.h, include/rtems/itron/mbox.h, include/rtems/itron/msgbuffer.h, include/rtems/itron/network.h, include/rtems/itron/object.h, include/rtems/itron/port.h, include/rtems/itron/semaphore.h, include/rtems/itron/sysmgmt.h, include/rtems/itron/task.h, include/rtems/itron/time.h, include/rtems/itron/vmempool.h, inline/rtems/itron/eventflags.inl, inline/rtems/itron/fmempool.inl, inline/rtems/itron/intr.inl, inline/rtems/itron/mbox.inl, inline/rtems/itron/msgbuffer.inl, inline/rtems/itron/network.inl, inline/rtems/itron/port.inl, inline/rtems/itron/semaphore.inl, inline/rtems/itron/sysmgmt.inl, inline/rtems/itron/task.inl, inline/rtems/itron/time.inl, inline/rtems/itron/vmempool.inl, macros/rtems/itron/eventflags.inl, macros/rtems/itron/fmempool.inl, macros/rtems/itron/intr.inl, macros/rtems/itron/mbox.inl, macros/rtems/itron/msgbuffer.inl, macros/rtems/itron/network.inl, macros/rtems/itron/port.inl, macros/rtems/itron/semaphore.inl, macros/rtems/itron/sysmgmt.inl, macros/rtems/itron/task.inl, macros/rtems/itron/time.inl, macros/rtems/itron/vmempool.inl, src/can_wup.c, src/chg_pri.c, src/cre_mbf.c, src/cre_mbx.c, src/cre_sem.c, src/cre_tsk.c, src/del_mbf.c, src/del_mbx.c, src/del_sem.c, src/del_tsk.c, src/dis_dsp.c, src/ena_dsp.c, src/eventflags.c, src/exd_tsk.c, src/ext_tsk.c, src/fmempool.c, src/frsm_tsk.c, src/get_tid.c, src/itronintr.c, src/itronsem.c, src/itrontime.c, src/mbox.c, src/mboxtranslatereturncode.c, src/msgbuffer.c, src/msgbuffertranslatereturncode.c, src/network.c, src/port.c, src/prcv_mbf.c, src/prcv_mbx.c, src/preq_sem.c, src/psnd_mbf.c, src/rcv_mbf.c, src/rcv_mbx.c, src/ref_mbf.c, src/ref_mbx.c, src/ref_sem.c, src/ref_tsk.c, src/rel_wai.c, src/rot_rdq.c, src/rsm_tsk.c, src/sig_sem.c, src/slp_tsk.c, src/snd_mbf.c, src/snd_mbx.c, src/sta_tsk.c, src/sus_tsk.c, src/sysmgmt.c, src/task.c, src/ter_tsk.c, src/trcv_mbf.c, src/trcv_mbx.c, src/tslp_tsk.c, src/tsnd_mbf.c, src/twai_sem.c, src/vmempool.c, src/wai_sem.c, src/wup_tsk.c: URL for license changed.
  • Property mode set to 100644
File size: 2.9 KB
Line 
1/*
2 *  ITRON 3.0 Mailbox Manager
3 *
4 *  COPYRIGHT (c) 1989-1999.
5 *  On-Line Applications Research Corporation (OAR).
6 *
7 *  The license and distribution terms for this file may be
8 *  found in the file LICENSE in this distribution or at
9 *  http://www.rtems.com/license/LICENSE.
10 *
11 *  $Id$
12 */
13
14#if HAVE_CONFIG_H
15#include "config.h"
16#endif
17
18#include <itron.h>
19
20#include <rtems/itron/mbox.h>
21#include <rtems/itron/task.h>
22
23/*
24 *  cre_mbx - Create Mailbox
25 *
26 *      Creates a Mailbox according to the following spec:
27 *
28 * ------Parameters-------------------------
29 *  ID      mbxid   MailboxID
30 *  T_CMBX *pk_cmbx Packet to Create Mailbox
31 * -----------------------------------------
32 *   -*pk_cmbx members*-
33 *    VP                exinf   ExtendedInformation
34 *    ATR               mbxatr  MailboxAttributes
35 *                      (the use of the following information
36 *                        is implementation dependent)
37 *    INT               bufcnt  BufferMessageCount
38 *                      (CPU and/or implementation-dependent information
39 *                         may also be included)
40 *
41 * ----Return Parameters--------------------
42 *  ER      ercd    ErrorCode
43 * -----------------------------------------
44 *
45 *
46 * ----C Language Interface-----------------
47 *  ER ercd = cre_mbx ( ID mbxid, T_CMBX *pk_cmbx ) ;
48 * -----------------------------------------
49 *
50 */
51
52ER cre_mbx(
53  ID      mbxid,
54  T_CMBX *pk_cmbx
55)
56{
57  register ITRON_Mailbox_Control *the_mailbox;
58  CORE_message_queue_Attributes   the_mailbox_attributes;
59
60  if ( !pk_cmbx )
61    return E_PAR;
62
63  if ((pk_cmbx->mbxatr & (TA_TPRI | TA_MPRI)) != 0 )
64    return E_RSATR;
65
66  _Thread_Disable_dispatch();              /* protects object pointer */
67
68  the_mailbox = _ITRON_Mailbox_Allocate( mbxid );
69  if ( !the_mailbox ) {
70    _Thread_Enable_dispatch();
71    return _ITRON_Mailbox_Clarify_allocation_id_error( mbxid );
72  }
73
74  the_mailbox->count = pk_cmbx->bufcnt;
75  if (pk_cmbx->mbxatr & TA_MPRI)
76    the_mailbox->do_message_priority = TRUE;
77  else
78    the_mailbox->do_message_priority = FALSE;
79
80  if (pk_cmbx->mbxatr & TA_TPRI)
81    the_mailbox_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
82  else
83    the_mailbox_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
84
85  if ( !_CORE_message_queue_Initialize(
86           &the_mailbox->message_queue,
87           OBJECTS_ITRON_MAILBOXES,
88           &the_mailbox_attributes,
89           the_mailbox->count,
90           sizeof(T_MSG *),
91           NULL ) ) {                      /* Multiprocessing not supported */
92    _ITRON_Mailbox_Free(the_mailbox);
93    _ITRON_return_errorno( E_OBJ );
94  }
95
96  _ITRON_Objects_Open( &_ITRON_Mailbox_Information, &the_mailbox->Object );
97
98  /*
99   *  If multiprocessing were supported, this is where we would announce
100   *  the existence of the semaphore to the rest of the system.
101   */
102
103#if defined(RTEMS_MULTIPROCESSING)
104#endif
105
106  _ITRON_return_errorno( E_OK );
107}
Note: See TracBrowser for help on using the repository browser.