From 352c9b2035e32e56f10f261d94955d97f4ab0f1c Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 9 Nov 1999 22:07:23 +0000 Subject: This patch adds the basic framework for the ITRON 3.0 API implementation for RTEMS. --- cpukit/itron/include/Makefile.am | 27 +++ cpukit/itron/include/itron.h | 49 ++++ cpukit/itron/include/itronsys/README | 9 + cpukit/itron/include/itronsys/eventflags.h | 143 ++++++++++++ cpukit/itron/include/itronsys/fmempool.h | 122 ++++++++++ cpukit/itron/include/itronsys/intr.h | 103 +++++++++ cpukit/itron/include/itronsys/mbox.h | 131 +++++++++++ cpukit/itron/include/itronsys/msgbuffer.h | 157 +++++++++++++ cpukit/itron/include/itronsys/network.h | 75 ++++++ cpukit/itron/include/itronsys/port.h | 187 +++++++++++++++ cpukit/itron/include/itronsys/semaphore.h | 118 ++++++++++ cpukit/itron/include/itronsys/status.h | 67 ++++++ cpukit/itron/include/itronsys/sysmgmt.h | 316 ++++++++++++++++++++++++++ cpukit/itron/include/itronsys/task.h | 295 ++++++++++++++++++++++++ cpukit/itron/include/itronsys/time.h | 182 +++++++++++++++ cpukit/itron/include/itronsys/types.h | 114 ++++++++++ cpukit/itron/include/itronsys/vmempool.h | 129 +++++++++++ cpukit/itron/include/rtems/itron/README | 10 + cpukit/itron/include/rtems/itron/config.h | 63 +++++ cpukit/itron/include/rtems/itron/eventflags.h | 58 +++++ cpukit/itron/include/rtems/itron/fmempool.h | 59 +++++ cpukit/itron/include/rtems/itron/intr.h | 28 +++ cpukit/itron/include/rtems/itron/itronapi.h | 27 +++ cpukit/itron/include/rtems/itron/mbox.h | 58 +++++ cpukit/itron/include/rtems/itron/msgbuffer.h | 60 +++++ cpukit/itron/include/rtems/itron/network.h | 28 +++ cpukit/itron/include/rtems/itron/object.h | 117 ++++++++++ cpukit/itron/include/rtems/itron/port.h | 58 +++++ cpukit/itron/include/rtems/itron/semaphore.h | 56 +++++ cpukit/itron/include/rtems/itron/sysmgmt.h | 28 +++ cpukit/itron/include/rtems/itron/task.h | 88 +++++++ cpukit/itron/include/rtems/itron/time.h | 28 +++ cpukit/itron/include/rtems/itron/vmempool.h | 59 +++++ 33 files changed, 3049 insertions(+) create mode 100644 cpukit/itron/include/Makefile.am create mode 100644 cpukit/itron/include/itron.h create mode 100644 cpukit/itron/include/itronsys/README create mode 100644 cpukit/itron/include/itronsys/eventflags.h create mode 100644 cpukit/itron/include/itronsys/fmempool.h create mode 100644 cpukit/itron/include/itronsys/intr.h create mode 100644 cpukit/itron/include/itronsys/mbox.h create mode 100644 cpukit/itron/include/itronsys/msgbuffer.h create mode 100644 cpukit/itron/include/itronsys/network.h create mode 100644 cpukit/itron/include/itronsys/port.h create mode 100644 cpukit/itron/include/itronsys/semaphore.h create mode 100644 cpukit/itron/include/itronsys/status.h create mode 100644 cpukit/itron/include/itronsys/sysmgmt.h create mode 100644 cpukit/itron/include/itronsys/task.h create mode 100644 cpukit/itron/include/itronsys/time.h create mode 100644 cpukit/itron/include/itronsys/types.h create mode 100644 cpukit/itron/include/itronsys/vmempool.h create mode 100644 cpukit/itron/include/rtems/itron/README create mode 100644 cpukit/itron/include/rtems/itron/config.h create mode 100644 cpukit/itron/include/rtems/itron/eventflags.h create mode 100644 cpukit/itron/include/rtems/itron/fmempool.h create mode 100644 cpukit/itron/include/rtems/itron/intr.h create mode 100644 cpukit/itron/include/rtems/itron/itronapi.h create mode 100644 cpukit/itron/include/rtems/itron/mbox.h create mode 100644 cpukit/itron/include/rtems/itron/msgbuffer.h create mode 100644 cpukit/itron/include/rtems/itron/network.h create mode 100644 cpukit/itron/include/rtems/itron/object.h create mode 100644 cpukit/itron/include/rtems/itron/port.h create mode 100644 cpukit/itron/include/rtems/itron/semaphore.h create mode 100644 cpukit/itron/include/rtems/itron/sysmgmt.h create mode 100644 cpukit/itron/include/rtems/itron/task.h create mode 100644 cpukit/itron/include/rtems/itron/time.h create mode 100644 cpukit/itron/include/rtems/itron/vmempool.h (limited to 'cpukit/itron/include') diff --git a/cpukit/itron/include/Makefile.am b/cpukit/itron/include/Makefile.am new file mode 100644 index 0000000000..f83468dd1b --- /dev/null +++ b/cpukit/itron/include/Makefile.am @@ -0,0 +1,27 @@ +## +## $Id$ +## + +AUTOMAKE_OPTIONS = foreign 1.4 + +H_PIECES = itron.h + +noinst_HEADERS = $(H_PIECES) + +TMPINSTALL_FILES = \ +$(PROJECT_INCLUDE) \ +$(noinst_HEADERS:%=$(PROJECT_INCLUDE)/%) + +$(PROJECT_INCLUDE): + @$(mkinstalldirs) $@ +$(PROJECT_INCLUDE)/%.h: %.h + $(INSTALL_DATA) $< $@ + +all-am: $(TMPINSTALL_FILES) +debug-am: $(TMPINSTALL_FILES) +profile-am: $(TMPINSTALL_FILES) + +SUBDIRS = rtems itronsys + +include $(top_srcdir)/../../../../automake/subdirs.am +include $(top_srcdir)/../../../../automake/local.am diff --git a/cpukit/itron/include/itron.h b/cpukit/itron/include/itron.h new file mode 100644 index 0000000000..2b6d2442f9 --- /dev/null +++ b/cpukit/itron/include/itron.h @@ -0,0 +1,49 @@ +/* + * 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$ + */ + +#ifndef __ITRON_h_ +#define __ITRON_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Include the basic requirements + */ + +#include /* basic RTEMS types defined by */ + /* each port */ +#include /* define all the TRON types */ + /* in terms of the RTEMS base types */ +#include /* define all ITRON status codes */ + +/* + * Now include the per manager include files + */ + +#include +#include +#include +#include +#include +#include /* network depends on this file */ +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/README b/cpukit/itron/include/itronsys/README new file mode 100644 index 0000000000..8191ad3c5f --- /dev/null +++ b/cpukit/itron/include/itronsys/README @@ -0,0 +1,9 @@ +# +# $Id$ +# + +This directory contains the public interface of each manager. +Each file in this directory is included from . + +The private header file for each ITRON manager is in +../rtems/itron. \ No newline at end of file diff --git a/cpukit/itron/include/itronsys/eventflags.h b/cpukit/itron/include/itronsys/eventflags.h new file mode 100644 index 0000000000..27224404f7 --- /dev/null +++ b/cpukit/itron/include/itronsys/eventflags.h @@ -0,0 +1,143 @@ +/* + * 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$ + */ + +#ifndef __ITRON_EVENTFLAGS_h_ +#define __ITRON_EVENTFLAGS_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Eventflags (cre_flg) Structure + */ + +typedef struct t_cflg { + VP exinf; /* extended information */ + ATR flgatr; /* eventflag attribute */ + UINT iflgptn; /* initial eventflag */ + /* additional information may be included depending on the implementation */ +} T_CFLG; + +/* + * flgatr + */ + +#define TA_WSGL 0x00 /* multiple tasks are not allowed to wait (Wait + Single Task) */ +#define TA_WMUL 0x08 /* multiple tasks are allowed to wait (Wait + Multiple Task) */ + +/* + * wfmode + */ + +#define TWF_ANDW 0x00 /* AND wait */ +#define TWF_ORW 0x02 /* OR wait */ +#define TWF_CLR 0x01 /* clear specification */ + +/* + * Reference Eventflags (ref_flg) Structure + */ + +typedef struct t_rflg { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there is a waiting task */ + UINT flgptn; /* eventflag bit pattern */ + /* additional information may be included depending on the implementation */ +} T_RFLG; + +/* + * Eventflag Functions + */ + +/* + * cre_flg - Create Eventflag + */ + +ER cre_flg( + ID flgid, + T_CFLG *pk_cflg +); + +/* + * del_flg - Delete Eventflag + */ + +ER del_flg( + ID flgid +); + +/* + * set_flg - Set Eventflag + */ + +ER set_flg( + ID flgid, + UINT setptn +); + +/* + * clr_flg - Clear Eventflag + */ + +ER clr_flg( + ID flgid, + UINT clrptn +); + +/* + * wai_flg - Wait on Eventflag + */ + +ER wai_flg( + UINT *p_flgptn, + ID flgid, + UINT waiptn, + UINT wfmode +); + +/* + * pol_flg - Wait for Eventflag(Polling) + */ + +ER pol_flg( + UINT *p_flgptn, + ID flgid, + UINT waiptn, + UINT wfmode +); + +/* + * twai_flg - Wait on Eventflag with Timeout + */ + +ER twai_flg( + UINT *p_flgptn, + ID flgid, + UINT waiptn, + UINT wfmode, + TMO tmout +); + +/* + * ref_flg - Reference Eventflag Status + */ + +ER ref_flg( + T_RFLG *pk_rflg, + ID flgid +); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/fmempool.h b/cpukit/itron/include/itronsys/fmempool.h new file mode 100644 index 0000000000..fa72c8eb31 --- /dev/null +++ b/cpukit/itron/include/itronsys/fmempool.h @@ -0,0 +1,122 @@ +/* + * 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$ + */ + +#ifndef __ITRON_FIXED_MEMORYPOOL_h_ +#define __ITRON_FIXED_MEMORYPOOL_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Fixed Memory Pool (cre_mpf) Structure + */ + + /* cre_mpf */ +typedef struct t_cmpf { + VP exinf; /* extended information */ + ATR mpfatr; /* memorypool attributes */ + INT mpfcnt; /* block count for entire memorypool */ + INT blfsz; /* fixed-size memory block size */ + /* additional information may be included depending on the implementation */ +} T_CMPF; + +/* + * mpfatr + */ + +#define TA_TFIFO 0x00 /* waiting tasks are handled by FIFO */ +#define TA_TPRI 0x01 /* waiting tasks are handled by priority */ + + +/* + * Reference Fixed Memory Pool (ref_mpf) Structure + */ + + /* ref_mpf */ +typedef struct t_rmpf { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there are waiting tasks */ + INT frbcnt; /* free block count */ + /* additional information may be included depending on the implementation */ +} T_RMPF; + +/* + * Fixed Memory Pool Functions + */ + +/* + * cre_mpf - Create Fixed-Size Memorypool + */ + +ER cre_mpf( + ID mpfid, + T_CMPF *pk_cmpf +); + +/* + * del_mpf - Delete Fixed-Size Memorypool + */ + +ER del_mpf( + ID mpfid +); + +/* + * get_blf - Get Fixed-Size Memory Block + */ + +ER get_blf( + VP *p_blf, + ID mpfid +); + +/* + * pget_blf - Poll and Get Fixed-Size Memory Block + */ + +ER pget_blf( + VP *p_blf, + ID mpfid +); + +/* + * tget_blf - Get Fixed-Size Memory Block with Timeout + */ + +ER tget_blf( + VP *p_blf, + ID mpfid, + TMO tmout +); + +/* + * rel_blf - Release Fixed-Size Memory Block + */ + +ER rel_blf( + ID mpfid, + VP blf +); + +/* + * ref_mpf - Reference Fixed-Size Memorypool Status + */ + +ER ref_mpf( + T_RMPF *pk_rmpf, + ID mpfid +); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/intr.h b/cpukit/itron/include/itronsys/intr.h new file mode 100644 index 0000000000..07f0c038f2 --- /dev/null +++ b/cpukit/itron/include/itronsys/intr.h @@ -0,0 +1,103 @@ +/* + * 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$ + */ + +#ifndef __ITRON_INTERRUPT_h_ +#define __ITRON_INTERRUPT_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Define Interrupt (def_int) Structure + */ + +typedef struct t_dint { + ATR intatr; /* interrupt handler attributes */ + FP inthdr; /* interrupt handler address */ + /* additional information may be included depending on the implementation */ +} T_DINT; + +/* + * Interrupt Functions + */ + +/* + * def_int - Define Interrupt Handler + */ + +ER def_int( + UINT dintno, + T_DINT *pk_dint +); + +/* + * ret_int - Return from Interrupt Handler + */ + +void ret_int( void ); + +/* + * ret_wup - Return and Wakeup Task + */ + +void ret_wup( + ID tskid +); + +/* + * loc_cpu - Lock CPU + */ + +ER loc_cpu( void ); + +/* + * unl_cpu - Unlock CPU + */ + +ER unl_cpu( void ); + +/* + * dis_int - Disable Interrupt + */ + +ER dis_int( + UINT eintno +); + +/* + * ena_int - Enable Interrupt + */ + +ER ena_int( + UINT eintno +); + +/* + * chg_iXX - Change Interrupt Mask(Level or Priority) + */ + +ER chg_iXX( + UINT iXXXX +); + +/* + * ref_iXX - Reference Interrupt Mask(Level or Priority) + */ + +ER ref_iXX( + UINT *p_iXXXX +); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/mbox.h b/cpukit/itron/include/itronsys/mbox.h new file mode 100644 index 0000000000..ef0581d02e --- /dev/null +++ b/cpukit/itron/include/itronsys/mbox.h @@ -0,0 +1,131 @@ +/* + * 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$ + */ + +#ifndef __ITRON_MBOX_h_ +#define __ITRON_MBOX_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Mailbox (cre_mbx) Structure + */ + +typedef struct t_cmbx { + VP exinf; /* extended information */ + ATR mbxatr; /* mailbox attributes */ + /* Following is implementation-dependent function */ + INT bufcnt; /* ring buffer size */ + /* additional information may be included depending on the implementation */ +} T_CMBX; + +/* + * mbxatr + */ + +#define TA_TFIFO 0x00 /* waiting tasks are handled by FIFO */ +#define TA_TPRI 0x01 /* waiting tasks are handled by priority */ +#define TA_MFIFO 0x00 /* messages are handled by FIFO */ +#define TA_MPRI 0x02 /* messages are handled by priority */ + +typedef struct t_msg { + /* + * A region (header) reserved by the OS may be included first + * depending on the implementation. + */ + /* VB msgcont[]; XXX */ + unsigned8 msgcont[1]; +} T_MSG; + +/* + * Reference Mailbox (ref_mbx) Structure + */ + +typedef struct t_rmbx { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there is a waiting task */ + T_MSG *pk_msg; /* message to be sent next */ + /* additional information may be included depending on the implementation */ +} T_RMBX; + +/* + * Mailbox Functions + */ + +/* + * cre_mbx - Create Mailbox + */ + +ER cre_mbx( + ID mbxid, + T_CMBX* pk_cmbx +); + +/* + * del_mbx - Delete Mailbox + */ + +ER del_mbx( + ID mbxid +); + +/* + * snd_msg - Send Message to Mailbox + */ + +ER snd_msg( + ID mbxid, + T_MSG *pk_msg +); + +/* + * rcv_msg - Receive Message from Mailbox + */ + +ER rcv_msg( + T_MSG **ppk_msg, + ID mbxid +); + +/* + * prcv_msg - Poll and Receive Message from Mailbox + */ + +ER prcv_msg( + T_MSG **ppk_msg, + ID mbxid +); + +/* + * trcv_msg - Receive Message from Mailbox with Timeout + */ + +ER trcv_msg( + T_MSG **ppk_msg, + ID mbxid, + TMO tmout +); + +/* + * ref_mbx - Reference Mailbox Status + */ + +ER ref_mbx( + T_RMBX *pk_rmbx, + ID mbxid +); + + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/msgbuffer.h b/cpukit/itron/include/itronsys/msgbuffer.h new file mode 100644 index 0000000000..20a7563851 --- /dev/null +++ b/cpukit/itron/include/itronsys/msgbuffer.h @@ -0,0 +1,157 @@ +/* + * 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$ + */ + +#ifndef __ITRON_MESSAGEBUFFER_h_ +#define __ITRON_MESSAGEBUFFER_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Message Buffer (cre_mbf) Structure + */ + +typedef struct t_cmbf { + VP exinf; /* extended information */ + ATR mbfatr; /* messagebuffer attributes */ + INT bufsz; /* messagebuffer size */ + INT maxmsz; /* maximum size of messages */ + /* additional information may be included depending on the implementation */ +} T_CMBF; + +/* + * mbfatr + */ + +#define TA_TFIFO 0x00 /* tasks waiting to receive messages are handled + by FIFO */ +#define TA_TPRI 0x01 /* tasks waiting to receive messages are handled + by priority */ + +/* + * mbfid + */ + +#define TMBF_OS (-4) /* messagebuffer used for OS error log */ +#define TMBF_DB (-3) /* messagebuffer used for debugging */ + +/* + * Reference Message Buffer (ref_mbf) Structure + */ + +typedef struct t_rmbf { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there is a */ + /* task waiting to receive a message */ + BOOL_ID stsk; /* indicates whether or not there is a */ + /* task waiting to send a message */ + INT msgsz; /* size of message to be sent next */ + INT frbufsz; /* size of free buffer */ + /* additional information may be included depending on the implementation */ +} T_RMBF; + +/* + * Message Buffer Functions + */ + +/* + * cre_mbf - Create MessageBuffer + */ + +ER cre_mbf( + ID mbfid, + T_CMBF *pk_cmbf +); + +/* + * del_mbf - Delete MessageBuffer + */ + +ER del_mbf( + ID mbfid +); + +/* + * snd_mbf - Send Message to MessageBuffer + */ + +ER snd_mbf( + ID mbfid, + VP msg, + INT msgsz +); + +/* + * psnd_mbf - Poll and Send Message to MessageBuffer + */ + +ER psnd_mbf( + ID mbfid, + VP msg, + INT msgsz +); + +/* + * tsnd_mbf - Send Message to MessageBuffer with Timeout + */ + +ER tsnd_mbf( + ID mbfid, + VP msg, + INT msgsz, + TMO tmout +); + +/* + * rcv_mbf - Receive Message from MessageBuffer + */ + +ER rcv_mbf( + VP msg, + INT *p_msgsz, + ID mbfid +); + +/* + * prcv_mbf - Poll and Receive Message from MessageBuffer + */ + +ER prcv_mbf( + VP msg, + INT *p_msgsz, + ID mbfid +); + +/* + * trcv_mbf - Receive Message from MessageBuffer with Timeout + */ + +ER trcv_mbf( + VP msg, + INT *p_msgsz, + ID mbfid, + TMO tmout +); + +/* + * ref_mbf - Reference MessageBuffer Status + */ + +ER ref_mbf( + T_RMBF *pk_rmbf, + ID mbfid +); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/network.h b/cpukit/itron/include/itronsys/network.h new file mode 100644 index 0000000000..21e3e0941c --- /dev/null +++ b/cpukit/itron/include/itronsys/network.h @@ -0,0 +1,75 @@ +/* + * 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$ + */ + +#ifndef __ITRON_NETWORK_h_ +#define __ITRON_NETWORK_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * NODE srcnode, dstnode, nod: + */ + +#define TND_SELF 0 /* specifies the local node */ +#define TND_OTHR (-1) /* specifies default remote node */ + +/* + * Network Functions + */ + +/* + * nrea_dat - Read Data from another Node + */ + +ER nrea_dat( + INT *p_reasz, + VP dstadr, + NODE srcnode, + VP srcadr, + INT datsz +); + +/* + * nwri_dat - Write Data to another Node + */ + +ER nwri_dat( + INT *p_wrisz, + NODE dstnode, + VP dstadr, + VP srcadr, + INT datsz +); + +/* + * nget_nod - Get Local Node Number + */ + +ER nget_nod( + NODE *p_node +); + +/* + * nget_ver - Get Version Information of another Node + */ + +ER nget_ver( + T_VER *pk_ver, + NODE node +); + + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/port.h b/cpukit/itron/include/itronsys/port.h new file mode 100644 index 0000000000..a8935b403f --- /dev/null +++ b/cpukit/itron/include/itronsys/port.h @@ -0,0 +1,187 @@ +/* + * 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$ + */ + +#ifndef __ITRON_PORT_h_ +#define __ITRON_PORT_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Port (cre_por) Structure + */ + +typedef struct t_cpor { + VP exinf; /* extended information */ + ATR poratr; /* port attributes */ + INT maxcmsz; /* maximum call message size */ + INT maxrmsz; /* maximum reply message size */ + /* additional information may be included depending on the implementation */ +} T_CPOR; + +/* + * poratr + */ + +#define TA_NULL 0 /* specifies no particular attributes */ + +/* + * TA_NULL should be used in place of zeroes to turn off all + * attribute features. + */ + +/* + * Reference Port (ref_por) Structure + */ + +typedef struct t_rpor { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there is a task */ + /* waiting to call a rendezvous */ + BOOL_ID atsk; /* indicates whether or not there is a task */ + /* waiting to accept a rendezvous */ + /* additional information may be included depending on the implementation */ +} T_RPOR; + +/* + * Port Functions + */ + +/* + * cre_por - Create Port for Rendezvous + */ + +ER cre_por( + ID porid, + T_CPOR *pk_cpor +); + +/* + * del_por - Delete Port for Rendezvous + */ + +ER del_por( + ID porid +); + +/* + * cal_por - Call Port for Rendezvous Poll + */ + +ER cal_por( + VP msg, + INT *p_rmsgsz, + ID porid, + UINT calptn, + INT cmsgsz +); + +/* + * pcal_por - Poll and Call Port for Rendezvous + */ + +ER pcal_por( + VP msg, + INT *p_rmsgsz, + ID porid, + UINT calptn, + INT cmsgsz +); + +/* + * tcal_por - Call Port for Rendezvous with Timeout + */ + +ER tcal_por( + VP msg, + INT *p_rmsgsz, + ID porid, + UINT calptn, + INT cmsgsz, + TMO tmout +); + +/* + * acp_por - Accept Port for Rendezvous Poll + */ + +ER acp_por( + RNO *p_rdvno, + VP msg, + INT *p_cmsgsz, + ID porid, + UINT acpptn +); + +/* + * pacp_por - Poll and Accept Port for Rendezvous + */ + +ER pacp_por( + RNO *p_rdvno, + VP msg, + INT *p_cmsgsz, + ID porid, + UINT acpptn +); + +/* + * tacp_por - Accept Port for Rendezvous with Timeout + */ + +ER tacp_por( + RNO *p_rdvno, + VP msg, + INT *p_cmsgsz, + ID porid, + UINT acpptn, + TMO tmout +); + +/* + * fwd_por - Forward Rendezvous to Other Port + */ + +ER fwd_por( + ID porid, + UINT calptn, + RNO rdvno, + VP msg, + INT cmsgsz +); + +/* + * rpl_rdv - Reply Rendezvous + */ + +ER rpl_rdv( + RNO rdvno, + VP msg, + INT rmsgsz +); + +/* + * ref_por - Reference Port Status + */ + +ER ref_por( + T_RPOR *pk_rpor, + ID porid +); + + + + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/semaphore.h b/cpukit/itron/include/itronsys/semaphore.h new file mode 100644 index 0000000000..c149012dad --- /dev/null +++ b/cpukit/itron/include/itronsys/semaphore.h @@ -0,0 +1,118 @@ +/* + * 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$ + */ + +#ifndef __ITRON_SEMAPHORE_h_ +#define __ITRON_SEMAPHORE_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Semaphore (cre_sem) Structure + */ + +typedef struct t_csem { + VP exinf; /* extended information */ + ATR sematr; /* semaphore attributes */ + /* Following is the extended function for [level X]. */ + INT isemcnt; /* initial semaphore count */ + INT maxsem; /* maximum semaphore count */ + /* additional information may be included depending on the implementation */ +} T_CSEM; + +/* + * sematr - Semaphore Attribute Values + */ + +#define TA_TFIFO 0x00 /* waiting tasks are handled by FIFO */ +#define TA_TPRI 0x01 /* waiting tasks are handled by priority */ + +#define _ITRON_SEMAPHORE_UNUSED_ATTRIBUTES ~(TA_TPRI) + +/* + * Reference Semaphore (ref_sem) Structure + */ + +typedef struct t_rsem { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there is a waiting task */ + INT semcnt; /* current semaphore count */ + /* additional information may be included depending on the implementation */ +} T_RSEM; + +/* + * Semaphore Functions + */ + +/* + * cre_sem - Create Semaphore + */ + +ER cre_sem( + ID semid, + T_CSEM *pk_csem +); + +/* + * del_sem - Delete Semaphore + */ + +ER del_sem( + ID semid +); + +/* + * sig_sem - Signal Semaphore + */ + +ER sig_sem( + ID semid +); + +/* + * wai_sem - Wait on Semaphore + */ + +ER wai_sem( + ID semid +); + +/* + * preq_sem - Poll and Request Semaphore + */ + +ER preq_sem( + ID semid +); + +/* + * twai_sem - Wait on Semaphore with Timeout + */ + +ER twai_sem( + ID semid, + TMO tmout +); + +/* + * ref_sem - Reference Semaphore Status + */ + +ER ref_sem( + ID semid, + T_RSEM *pk_rsem +); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/status.h b/cpukit/itron/include/itronsys/status.h new file mode 100644 index 0000000000..c2a640ba6a --- /dev/null +++ b/cpukit/itron/include/itronsys/status.h @@ -0,0 +1,67 @@ +/* + * 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$ + */ + +#ifndef __ITRON_STATUS_h_ +#define __ITRON_STATUS_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#define E_OK 0 /* Normal completion */ +#define E_SYS (-5) /* System error */ +#define E_NOMEM (-10) /* Insufficient memory */ +#define E_NOSPT (-17) /* Feature not supported */ +#define E_INOSPT (-18) /* Feature not supported by ITRON/FILE */ + /* specification */ +#define E_RSFN (-20) /* Reserved function code number */ +#define E_RSATR (-24) /* Reserved attribute */ +#define E_PAR (-33) /* Parameter error */ +#define E_ID (-35) /* Invalid ID number */ +#define E_NOEXS (-52) /* Object does not exist */ +#define E_OBJ (-63) /* Invalid object state */ +#define E_MACV (-65) /* Memory access disabled or memory access */ + /* violation */ +#define E_OACV (-66) /* Object access violation */ +#define E_CTX (-69) /* Context error */ +#define E_QOVR (-73) /* Queuing or nesting overflow */ +#define E_DLT (-81) /* Object being waited for was deleted */ +#define E_TMOUT (-85) /* Polling failure or timeout exceeded */ +#define E_RLWAI (-86) /* WAIT state was forcibly released */ +#define EN_NOND (-113) /* Target node does not exist or cannot be */ + /* accessed */ +#define EN_OBJNO (-114) /* Specifies an object number which could not be */ + /* accessed on the target node */ +#define EN_PROTO (-115) /* Protocol not supported on target node */ +#define EN_RSFN (-116) /* System call or function not supported on */ + /* target node */ +#define EN_COMM (-117) /* No response from target node */ +#define EN_RLWAI (-118) /* Connection function response wait state was */ + /* forcibly released */ +#define EN_PAR (-119) /* A value outside the range supported by the */ + /* target node and/or transmission packet */ + /* format was specified as a parameter */ +#define EN_RPAR (-120) /* A value outside the range supported by the */ + /* issuing node and/or transmission packet */ + /* format was returned as a return parameter */ +#define EN_CTXID (-121) /* An object on another node was specified to */ + /* a system call issued from a task in dispatch */ + /* disabled state or from a task-independent */ + /* portion */ +#define EN_EXEC (-122) /* System call could not be executed due to */ + /* insufficient resources on the target node */ +#define EN_NOSPT (-123) /* Connection function not supported */ + + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/sysmgmt.h b/cpukit/itron/include/itronsys/sysmgmt.h new file mode 100644 index 0000000000..21076cdca4 --- /dev/null +++ b/cpukit/itron/include/itronsys/sysmgmt.h @@ -0,0 +1,316 @@ +/* + * 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$ + */ + +#ifndef __ITRON_SYSTEM_MANAGEMENT_h_ +#define __ITRON_SYSTEM_MANAGEMENT_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Get Version (get_ver) Structure + */ + +typedef struct t_ver { + UH maker; /* vendor */ + UH id; /* format number */ + UH spver; /* specification version */ + UH prver; /* product version */ + UH prno[4]; /* product control information */ + UH cpu; /* CPU information */ + UH var; /* variation descriptor */ +} T_VER; + +/* + * Specific MAKER codes established as of March, 1993 are as follows. + * Due to restrictions on the assignment of CPU codes described below, it is + * necessary to use maker codes in the range 0x000 through 0x00ff for vendors + * developing CPUs. + */ + +/* + * CPU defines XXX need to name the constants + */ + +#if 0 +#define 0x000 /* No version (test systems, etc.) */ +#define 0x001 /* University of Tokyo */ +#define 0x009 /* FUJITSU LIMITED */ +#define 0x00a /* Hitachi, Ltd. */ +#define 0x00b /* Matsushita Electric Industrial Co., Ltd. */ +#define 0x00c /* Mitsubishi Electric Corporation */ +#define 0x00d /* NEC Corporation */ +#define 0x00e /* Oki Electric Industry Co., Ltd. */ +#define 0x00f /* TOSHIBA CORPORATION */ +#endif + +/* + * The above have been assigned in alphabetical order. + */ + +#if 0 +#define 0x010 /* ALPS ELECTRIC CO., LTD. */ +#define 0x011 /* WACOM Co., Ltd. */ +#define 0x012 /* Personal Media Corporation */ +#define 0x101 /* OMRON CORPORATION */ +#define 0x102 /* SEIKOSHA CO., LTD. */ +#define 0x103 /* SYSTEM ALGO CO., LTD. */ +#define 0x104 /* Tokyo Computer Service Co., Ltd. */ +#define 0x105 /* YAMAHA CORPORATION */ +#define 0x106 /* MORSON JAPAN */ +#define 0x107 /* TOSHIBA INFORMATION SYSTEMS (JAPAN) CORP. */ +#define 0x108 /* Miyazaki System Planning Office */ +#define 0x109 /* Three Ace Computer Corporation */ +#endif + +/* + * CPU Codes + * + * Figure 47 shows the format of cpu code. Some processors use the format + * given in Figure 47(1). The format given in Figure 47(2) is used for all + * other proprietary processors. + * + * The code assignment of the CPU1 region in the format given in Figure 47(1) + * is common to ITRON and BTRON specifications. The same number is used in + * the CPU type of the standard object format of BTRON specification + * operating systems implemented on a TRON-specification chip. + * + * When using the format given in Figure 47(2) the code used for MAKER1 is + * assigned by using the lower 8 bits of MAKER described in the previous + * subsection. The code assignment of CPU2 is left up to each maker. + * + * + * + * +---------------+---------------+---------------+---------------+ + * (1) | 0 0 0 0 0 0 0 0 | CPU1 | + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * +---------------+---------------+---------------+---------------+ + * (2) | MAKER1 | CPU2 | + * +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + * + * Figure 47 Format of cpu Returned by get_ver + * + * + * Specific CPU codes established as of March, 1993 are as follows. + */ + +#if 0 +/* + * XXX CONVERT THESE to #defines + */ + + +/* + * Contents of the CPU1 field + */ + +#define (0x0) CPU unspecified, no CPU information given +#define (0x1) TRONCHIP32 shared +#define (0x2) reserved +#define (0x3) reserved +#define (0x4) reserved +#define (0x5) reserved (<> TRON-specification chip) +#define (0x6) reserved (<> TRON-specification chip) +#define (0x7) reserved (TRON-specification chip supporting the + LSID function) +/* CPU vendors are unspecified for codes B'00000000 through B'00000111. */ + +#define (0x8) reserved +#define (0x9) GMICRO/100 +#define (0xa) GMICRO/200 +#define (0xb) GMICRO/300 +#define (0xc) reserved +#define (0xd) TX1 +#define (0xe) TX2 +#define (0xf) reserved + +#define (0x10) reserved +#define (0x11) reserved +#define (0x12) reserved +#define (0x13) O32 +#define (0x14) reserved +#define (0x15) MN10400 +#define (0x16) reserved +#define (0x17) reserved + +#define (0x18) GMICRO/400 +#define (0x19) GMICRO/500 +#define (0x1a) reserved +#define (0x1b-0x3f) + reserved + * For GMICRO extended, TX series extended, and TRONCHIP64 chips. + +#define (0x40) Motorola 68000 +#define (0x41) Motorola 68010 +#define (0x42) Motorola 68020 +#define (0x43) Motorola 68030 +#define (0x44) Motorola 68040 +#define -(0x40-0x4f) +#define Motorola 68000 family +#define (0x50) National Semiconductor NS32032 +#define (0x50-0x5f) + National Semiconductor NS32000 family +#define (0x60) Intel 8086, 8088 +#define (0x61) Intel 80186 +#define (0x62) Intel 80286 +#define (0x63) Intel 80386 +#define (0x64) Intel 80486 +#define (0x60-0x6f) + Intel iAPX86 family + +#define (0x70-0x7f) + NEC V Series + +#define (0x80-0xff) + reserved +#endif + +/* + * Assigning Version Numbers + * + * The version numbers of ITRON and uITRON specifications take the following + * form. + * + * Ver X.YY.ZZ[.WW] + * + * where "X" represents major version number of the ITRON specification to + * distinguish ITRON1, ITRON2 and uITRON 3.0 specifications. Specific + * assignment is as follows. + * + * "X" = 1 ITRON1 specification + * = 2 ITRON2 or uITRON 2.0 specification + * = 3 uITRON 3.0 specification + * + * "YY" is a number used to distinguish versions according to changes and + * additions made to the specification. After the specification is published, + * this number is incremented in order "YY" = 00, 01, 02... according to + * version upgrades. The first digit of "YY" is 'A', 'B' or 'C' for draft + * standard versions and test versions within the TRON Association before the + * specification have been published. + * + * The "X.YY" part of the specification version numbers is returned by spver + * to get_ver system call. The corresponding hexadecimal value is used when + * "YY" includes 'A', 'B' or 'C'. + * + * "ZZ" represents a number used to distinguish versions related to the written + * style of a specification. This number is incremented in order + * "ZZ" = 00, 01, 02... when there have been changes in specification + * configuration, reordering of chapters or corrections of misprints. + * When a further distinction of the written style of specifications is + * desired, ".WW" may be added optionally after "ZZ". WW will be assumed + * to be zero if ".WW" is omitted. + */ + +/* + * Reference System (ref_sys) Structure + */ + +typedef struct t_rsys { + INT sysstat; /* system state */ + /* additional information may be included depending on the implementation */ +} T_RSYS; + +/* + * sysstat + */ + +#define TSS_TSK 0 /* normal state in which dispatching is enabled during + task portion execution */ +#define TSS_DDSP 1 /* state after dis_dsp has been executed during task + portion execution (dispatch disabled) */ +#define TSS_LOC 3 /* state after loc_cpu has been executed during task + portion execution (interrupt and dispatch disabled) + */ +#define TSS_INDP 4 /* state during execution of task-independent portions + (interrupt and timer handlers) */ + +/* + * Reference Configuration (ref_cfg) Structure + */ + +typedef struct t_rcfg { + /* details concerning members are implementation dependent */ +} T_RCFG; + +/* + * Define Service (def_svc) Structure + */ + +typedef struct t_dsvc { + ATR svcatr; /* extended SVC handler attributes */ + FP svchdr; /* extended SVC handler address */ + /* additional information may be included depending on the implementation */ +} T_DSVC; + +/* + * Define Exception (def_exc) Structure + */ + +typedef struct t_dexc { + ATR excatr; /* exception handler attributes */ + FP exchdr; /* exception handler address */ + /* additional information may be included depending on the implementation */ +} T_DEXC; + +/* + * System Management Functions + */ + +/* + * get_ver - Get Version Information + */ + +ER get_ver( + T_VER *pk_ver +); + +/* + * ref_sys - Reference Semaphore Status + */ + +ER ref_sys( + T_RSYS *pk_rsys +); + +/* + * ref_cfg - Reference Configuration Information + */ + +ER ref_cfg( + T_RCFG *pk_rcfg +); + +/* + * def_svc - Define Extended SVC Handler + */ + +ER def_svc( + FN s_fncd, + T_DSVC *pk_dsvc +); + +/* + * def_exc - Define Exception Handler + */ + +ER def_exc( + UINT exckind, + T_DEXC *pk_dexc +); + + + + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/task.h b/cpukit/itron/include/itronsys/task.h new file mode 100644 index 0000000000..fca48c03b8 --- /dev/null +++ b/cpukit/itron/include/itronsys/task.h @@ -0,0 +1,295 @@ +/* + * 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$ + */ + +#ifndef __ITRON_TASK_h_ +#define __ITRON_TASK_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Task (cre_tsk) Structure + */ + +typedef struct t_ctsk { + VP exinf; /* extended information */ + ATR tskatr; /* task attributes */ + FP task; /* task start address */ + PRI itskpri; /* initial task priority */ + INT stksz; /* stack size */ + /* additional information may be included depending on the implementation */ +} T_CTSK; + +/* + * Values for the tskatr field + */ + +#define TA_ASM 0x00 /* program written in assembly language */ +#define TA_HLNG 0x01 /* program written in high-level language */ +#define TA_COP0 0x8000 /* uses coprocessor having ID = 0 */ +#define TA_COP1 0x4000 /* uses coprocessor having ID = 1 */ +#define TA_COP2 0x2000 /* uses coprocessor having ID = 2 */ +#define TA_COP3 0x1000 /* uses coprocessor having ID = 3 */ +#define TA_COP4 0x0800 /* uses coprocessor having ID = 4 */ +#define TA_COP5 0x0400 /* uses coprocessor having ID = 5 */ +#define TA_COP6 0x0200 /* uses coprocessor having ID = 6 */ +#define TA_COP7 0x0100 /* uses coprocessor having ID = 7 */ + +/* + * Values for the tskid field + */ + +#define TSK_SELF 0 /* task specifies itself */ + +/* XXX is this a mistake in ITRON? FALSE was here and in the types list */ +#if 0 + +#define FALSE 0 /* indicates a task-independent portion (return */ + /* parameters only) */ +#endif + +/* + * Values for the tskpri field + */ + +#define TPRI_INI 0 /* specifies the initial priority on */ + /* task startup (chg_pri) */ +#define TPRI_RUN 0 /* specifies the highest priority during */ + /* execution (rot_rdq) */ + + +/* + * Reference Task (ref_tsk) Structure + */ + +typedef struct t_rtsk { + VP exinf; /* extended information */ + PRI tskpri; /* current priority */ + UINT tskstat; /* task state */ + /* + * The following are represent extended features of support + * [level X] (implementation-dependent). + */ + UINT tskwait; /* cause of wait */ + ID wid; /* ID of object being waited for */ + INT wupcnt; /* wakeup request count */ + INT suscnt; /* SUSPEND request count */ + ATR tskatr; /* task attributes */ + FP task; /* task start address */ + PRI itskpri; /* initial task priority */ + INT stksz; /* stack size */ +} T_RTSK; + +/* + * Values for the tskstat field + */ + + +#define TTS_RUN 0x01 /* RUN */ +#define TTS_RDY 0x02 /* READY */ +#define TTS_WAI 0x04 /* WAIT */ +#define TTS_SUS 0x08 /* SUSPEND */ +#define TTS_WAS 0x0C /* WAIT-SUSPEND */ +#define TTS_DMT 0x10 /* DORMANT */ + +/* + * Values for the tskwait field + */ + +#define TTW_SLP 0x0001 /* wait due to slp_tsk or tslp_tsk */ +#define TTW_DLY 0x0002 /* wait due to dly_tsk */ +#define TTW_NOD 0x0008 /* connection function response wait */ +#define TTW_FLG 0x0010 /* wait due to wai_flg or twai_flg */ +#define TTW_SEM 0x0020 /* wait due to wai_sem or twai_sem */ +#define TTW_MBX 0x0040 /* wait due to rcv_msg or trcv_msg */ +#define TTW_SMBF 0x0080 /* wait due to snd_mbf or tsnd_mbf */ +#define TTW_MBF 0x0100 /* wait due to rcv_mbf or trcv_mbf */ +#define TTW_CAL 0x0200 /* wait for rendezvous call */ +#define TTW_ACP 0x0400 /* wait for rendezvous accept */ +#define TTW_RDV 0x0800 /* wait for rendezvous completion */ +#define TTW_MPL 0x1000 /* wait due to get_blk or tget_blk */ +#define TTW_MPF 0x2000 /* wait due to get_blf or tget_blf */ + +/* + * Since the task states given by tskstat and tskwait are expressed + * by bit correspondences, they are convenient when looking for OR + * conditions (such as whether a task is in WAIT or READY state). + */ + +/* + * Task Management Functions + */ + +/* + * cre_tsk - Create Task + */ + +ER cre_tsk( + ID tskid, + T_CTSK *pk_ctsk +); + +/* + * del_tsk - Delete Task + */ + +ER del_tsk( + ID tskid +); + +/* + * sta_tsk - Start Task + */ + +ER sta_tsk( + ID tskid, + INT stacd +); + +/* + * ext_tsk - Exit Issuing Task + */ + +void ext_tsk( void ); + +/* + * exd_tsk - Exit and Delete Task + */ + +void exd_tsk( void ); + +/* + * ter_tsk - Terminate Other Task + */ + +ER ter_tsk( + ID tskid +); + +/* + * dis_dsp - Disable Dispatch + */ + +ER dis_dsp( void ); + +/* + * ena_dsp - Enable Dispatch + */ + +ER ena_dsp( void ); + +/* + * chg_pri - Change Task Priority + */ + +ER chg_pri( + ID tskid, + PRI tskpri +); + +/* + * rot_rdq - Rotate Tasks on the Ready Queue + */ + +ER rot_rdq( + PRI tskpri +); + +/* + * rel_wai - Release Wait of Other Task + */ + +ER rel_wai( + ID tskid +); + +/* + * get_tid - Get Task Identifier + */ + +ER get_tid( + ID *p_tskid +); + +/* + * ref_tsk - Reference Task Status + */ + +ER ref_tsk( + T_RTSK *pk_rtsk, + ID tskid +); + + +/* + * Task-Dependent Synchronization Functions + */ + +/* + * sus_tsk - Suspend Other Task + */ + +ER sus_tsk( + ID tskid +); + +/* + * rsm_tsk - Resume Suspended Task + */ + +ER rsm_tsk( + ID tskid +); + +/* + * frsm_tsk - Forcibly Resume Suspended Task + */ + +ER frsm_tsk( + ID tskid +); + +/* + * slp_tsk - Sleep Task Sleep Task with Timeout + */ + +ER slp_tsk( void ); + +/* + * tslp_tsk - Sleep Task with Timeout + */ + +ER tslp_tsk( + TMO tmout +); + +/* + * wup_tsk - Wakeup Other Task + */ + +ER wup_tsk( + ID tskid +); + +/* + * can_wup - Cancel Wakeup Request + */ + +ER can_wup( + INT *p_wupcnt, + ID tskid +); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/time.h b/cpukit/itron/include/itronsys/time.h new file mode 100644 index 0000000000..780c73b842 --- /dev/null +++ b/cpukit/itron/include/itronsys/time.h @@ -0,0 +1,182 @@ +/* + * 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$ + */ + +#ifndef __ITRON_TIME_h_ +#define __ITRON_TIME_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * System Time Data Type + * + * Member configuration depends on the bit width of the processor and + * on the implementation. A total of 48 bits is recommended. + * + */ + +typedef struct t_systime { + H utime; /* upper 16 bits */ + UW ltime; /* lower 32 bits */ +} SYSTIME, CYCTIME, ALMTIME; + +/* + * XXX Look this up in the spec and figure out where it comes + * XXX from. dly_tim() references it but it was left out + * XXX of the initial cut at the header files. + */ + +typedef int DLYTIME; + +/* + * XXX (def_cyc) Structure + */ + +typedef struct t_dcyc { + VP exinf; /* extended information */ + ATR cycatr; /* cyclic handler attributes */ + FP cychdr; /* cyclic handler address */ + UINT cycact; /* cyclic handler activation */ + CYCTIME cyctim; /* cyclic startup period */ +} T_DCYC; + +/* + * cycact + */ + +#define TCY_OFF 0x00 /* do not invoke cyclic handler */ +#define TCY_ON 0x01 /* invoke cyclic handler */ +#define TCY_INT 0x02 /* initialize cycle count */ + +/* + * Reference Cyclic Handler (ref_cyc) Structure + */ + +typedef struct t_rcyc { + VP exinf; /* extended information */ + CYCTIME lfttim; /* time left before next handler startup */ + UINT cycact; /* cyclic handler activation */ + /* additional information may be included depending on the implementation */ +} T_RCYC; + +/* + * Define Alarm (def_alm) Structure + */ + +typedef struct t_dalm { + VP exinf; /* extended information */ + ATR almatr; /* alarm handler attributes */ + FP almhdr; /* alarm handler address */ + UINT tmmode; /* start time specification mode */ + ALMTIME almtim; /* handler startup time */ +} T_DALM; + +/* + * tmmode + */ + +#define TTM_ABS 0x00 /* specified as an absolute time */ +#define TTM_REL 0x01 /* specified as a relative time */ + +/* + * Reference Alarm (ref_alm) Structure + */ + +typedef struct t_ralm { + VP exinf; /* extended information */ + ALMTIME lfttim; /* time left before next handler startup */ + /* additional information may be included depending on the implementation */ +} T_RALM; + +/* + * Time Management Functions + */ + +/* + * set_tim - Set System Clock + */ + +ER set_tim( + SYSTIME *pk_tim +); + +/* + * get_tim - Get System Clock + */ + +ER get_tim( + SYSTIME *pk_tim +); + +/* + * dly_tsk - Delay Task + */ + +ER dly_tsk( + DLYTIME dlytim +); + +/* + * def_cyc - Define Cyclic Handler + */ + +ER def_cyc( + HNO cycno, + T_DCYC *pk_dcyc +); + +/* + * act_cyc - Activate Cyclic Handler + */ + +ER act_cyc( + HNO cycno, + UINT cycact +); + +/* + * ref_cyc - Reference Cyclic Handler Status + */ + +ER ref_cyc( + T_RCYC *pk_rcyc, + HNO cycno +); + +/* + * def_alm - Define Alarm Handler + */ + +ER def_alm( + HNO almno, + T_DALM *pk_dalm +); + +/* + * ref_alm - Reference Alarm Handler Status + */ + +ER ref_alm( + T_RALM *pk_ralm, + HNO almno +); + +/* + * ret_tmr - Return from Timer Handler + */ + +void ret_tmr( void ); + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/types.h b/cpukit/itron/include/itronsys/types.h new file mode 100644 index 0000000000..fd045df6aa --- /dev/null +++ b/cpukit/itron/include/itronsys/types.h @@ -0,0 +1,114 @@ +/* + * 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$ + */ + +#ifndef __ITRON_TYPES_h_ +#define __ITRON_TYPES_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* XXX some of these may need to be moved */ + +typedef signed8 B; /* signed 8-bit integer */ +typedef signed16 H; /* signed 16-bit integer */ +typedef signed32 W; /* signed 32-bit integer */ +typedef unsigned8 UB; /* unsigned 8-bit integer */ +typedef unsigned16 UH; /* unsigned 16-bit integer */ +typedef unsigned32 UW; /* unsigned 32-bit integer */ + +typedef unsigned32 VW; /* unpredictable data type (32-bit size) */ +typedef unsigned16 VH; /* unpredictable data type (16-bit size) */ +typedef unsigned8 VB; /* unpredictable data type (8-bit size) */ + +typedef void *VP; /* pointer to an unpredictable data type */ + +typedef void (*FP)(); /* program start address */ + +/* + * 6.4 Data Types + * + * The difference between VB, VH and VW and B, H and W is that only the + * number of bits is known for the former, not the data type of the + * contents. The latter clearly represent integers. + */ + +/* + * Data Types Dependent on ITRON Specification + * + * In order to clarify the meanings of certain parameters, the + * following names are used for data types which appear frequently + * and/or have special meanings. + */ + +typedef signed32 INT; /* Signed integer (bit width of processor) */ +typedef unsigned32 UINT; /* Unsigned integer (bit width of processor) */ +typedef boolean BOOL; /* Boolean value. TRUE (1) or FALSE (0). */ +typedef signed16 FN; /* Function code. Signed integer. Maximum 2 bytes. */ +typedef int ID; /* Object ID number (???id) */ + /* Value range depends on the system. Usually */ + /* a signed integer. Certain ID values may */ + /* represent objects on other nodes when the */ + /* connection function is supported. */ + +typedef unsigned32 BOOL_ID;/* Boolean value or ID number */ + +typedef signed32 HNO; /* Handler number */ +typedef signed32 RNO; /* Rendezvous number */ +typedef signed32 NODE; /* Node Number. Usually a signed integer. */ +typedef signed32 ATR; /* Object or handler attribute. */ + /* An unsigned integer. */ +typedef signed32 ER; /* Error code. A signed integer. */ +typedef unsigned32 PRI; /* Task priority. A signed integer. */ +typedef signed32 TMO; /* Timeout value. A signed integer. */ + /* TMO_POL = 0 indicates polling, */ + /* while TMO_FEVR = -1 indicates wait forever. */ + +/* + * 6.6 Common Constants and Data Structure Packet Formats + */ + +#define NADR (-1) /* invalid address or pointer value */ + +#ifndef TRUE +#define TRUE 1 /* true */ +#endif + +#ifndef FALSE +#define FALSE 0 /* false */ +#endif + +/* + * ATR tskatr, intatr, cycatr, almatr, svcatr, excatr: + * + * TA_ASM indicates that the task or handler is directly started + * at the assembly language level. The TA_ASM attribute has the + * opposite meaning of TA_HLNG. + * + * NOTE: Really in + */ + +#if 0 +#define TA_ASM 0x00 /* program written in assembly language */ +#define TA_HLNG 0x01 /* program written in high-level language */ +#endif + +/* + * TMO tmout: + */ + +#define TMO_POL 0 /* polling */ +#define TMO_FEVR (-1) /* wait forever */ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/itronsys/vmempool.h b/cpukit/itron/include/itronsys/vmempool.h new file mode 100644 index 0000000000..7ef45398d3 --- /dev/null +++ b/cpukit/itron/include/itronsys/vmempool.h @@ -0,0 +1,129 @@ +/* + * 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$ + */ + +#ifndef __ITRON_VARIABLE_MEMORYPOOL_h_ +#define __ITRON_VARIABLE_MEMORYPOOL_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Create Variable Memory Pool (cre_mpl) Structure + */ + +typedef struct t_cmpl { + VP exinf; /* extended information */ + ATR mplatr; /* memorypool attributes */ + INT mplsz; /* memorypool size */ + /* additional information may be included depending on the implementation */ +} T_CMPL; + +/* + * mplatr + */ + +#define TA_TFIFO 0x00 /* waiting tasks are handled by FIFO */ +#define TA_TPRI 0x01 /* waiting tasks are handled by priority */ + +/* + * mplid + */ + +#define TMPL_OS (-4) /* memorypool used by OS */ + +/* + * Reference Variable Memory Pool (ref_mpl) Structure + */ + +typedef struct t_rmpl { + VP exinf; /* extended information */ + BOOL_ID wtsk; /* indicates whether or not there are waiting tasks */ + INT frsz; /* total size of free memory */ + INT maxsz; /* size of largest contiguous memory */ + /* additional information may be included depending on the implementation */ +} T_RMPL; + +/* + * Variable Memory Pool Functions + */ + +/* + * cre_mpl - Create Variable-Size Memorypool + */ + +ER cre_mpl( + ID mplid, + T_CMPL *pk_cmpl +); + +/* + * del_mpl - Delete Variable-Size Memorypool + */ + +ER del_mpl( + ID mplid +); + +/* + * get_blk - Get Variable-Size Memory Block + */ + +ER get_blk( + VP *p_blk, + ID mplid, + INT blksz +); + +/* + * pget_blk - Poll and Get Variable-Size Memory Block + */ + +ER pget_blk( + VP *p_blk, + ID mplid, + INT blksz +); + +/* + * tget_blk - Get Variable-Size Memory Block with Timeout + */ + +ER tget_blk( + VP *p_blk, + ID mplid, + INT blksz, + TMO tmout +); + +/* + * rel_blk - Release Variable-Size Memory Block + */ + +ER rel_blk( + ID mplid, + VP blk +); + +/* + * ref_mpl - Reference Variable-Size Memorypool Status + */ + +ER ref_mpl( + T_RMPL *pk_rmpl, + ID mplid +); + + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/README b/cpukit/itron/include/rtems/itron/README new file mode 100644 index 0000000000..9ac3bf3417 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/README @@ -0,0 +1,10 @@ +# +# $Id$ +# + +This directory contains the private interface of each manager. +These files should only be included from the from the +implementation of each manager. + +The public header file for each ITRON manager is in +../../../tronsys. \ No newline at end of file diff --git a/cpukit/itron/include/rtems/itron/config.h b/cpukit/itron/include/rtems/itron/config.h new file mode 100644 index 0000000000..8403832025 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/config.h @@ -0,0 +1,63 @@ +/* config.h + * + * This include file contains the table of user defined configuration + * parameters specific for the ITRON API. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * 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$ + */ + +#ifndef __RTEMS_ITRON_CONFIGURATION_h +#define __RTEMS_ITRON_CONFIGURATION_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX + * + * The following records define the Configuration Table. The + * information contained in this table is required in all + * RTEMS systems, whether single or multiprocessor. This + * table primarily defines the following: + * + * + required number of each object type + */ + +/* + * For now, we are only allowing the user to specify the entry point + * and stack size for ITRON initialization threads. + */ + +typedef struct { + ID id; + T_CTSK attributes; +} itron_initialization_tasks_table; + +typedef struct { + int maximum_tasks; + int maximum_semaphores; + int maximum_eventflags; + int maximum_mailboxes; + int maximum_message_buffers; + int maximum_ports; + int maximum_memory_pools; + int maximum_fixed_memory_pools; + int number_of_initialization_tasks; + itron_initialization_tasks_table *User_initialization_tasks_table; +} itron_api_configuration_table; + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/itron/include/rtems/itron/eventflags.h b/cpukit/itron/include/rtems/itron/eventflags.h new file mode 100644 index 0000000000..3bd2903aaa --- /dev/null +++ b/cpukit/itron/include/rtems/itron/eventflags.h @@ -0,0 +1,58 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_EVENTFLAGS_h_ +#define __RTEMS_ITRON_EVENTFLAGS_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * The following defines the control block used to manage each event flag. + */ + +typedef struct { + ITRON_Objects_Control Object; + unsigned32 XXX_more_stuff_goes_here; +} ITRON_Eventflags_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Eventflags_Information; + +/* + * _ITRON_Eventflags_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Eventflags_Manager_initialization( + unsigned32 maximum_eventflags +); + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/fmempool.h b/cpukit/itron/include/rtems/itron/fmempool.h new file mode 100644 index 0000000000..5ee17fd6b0 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/fmempool.h @@ -0,0 +1,59 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_FIXED_MEMORYPOOL_h_ +#define __RTEMS_ITRON_FIXED_MEMORYPOOL_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * The following defines the control block used to manage each + * fixed memory pool. + */ + +typedef struct { + ITRON_Objects_Control Object; + unsigned32 XXX_more_stuff_goes_here; +} ITRON_Fixed_memory_pool_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Fixed_memory_pool_Information; + +/* + * _ITRON_Fixed_memory_pool_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Fixed_memory_pool_Manager_initialization( + unsigned32 maximum_fixed_memory_pools +); + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/intr.h b/cpukit/itron/include/rtems/itron/intr.h new file mode 100644 index 0000000000..d6d2703462 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/intr.h @@ -0,0 +1,28 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_INTERRUPT_h_ +#define __RTEMS_ITRON_INTERRUPT_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/itronapi.h b/cpukit/itron/include/rtems/itron/itronapi.h new file mode 100644 index 0000000000..b66f5fa379 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/itronapi.h @@ -0,0 +1,27 @@ +/* + * ITRON API Support + * + * 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$ + */ + +#ifndef __ITRON_API_h +#define __ITRON_API_h + +#include + +/* + * _ITRON_API_Initialize + * + * Initialize the ITRON API. + */ + +void _ITRON_API_Initialize( + rtems_configuration_table *configuration_table +); + +#endif +/* end of include file */ diff --git a/cpukit/itron/include/rtems/itron/mbox.h b/cpukit/itron/include/rtems/itron/mbox.h new file mode 100644 index 0000000000..5ce4180643 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/mbox.h @@ -0,0 +1,58 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_MBOX_h_ +#define __RTEMS_ITRON_MBOX_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * The following defines the control block used to manage each mailbox. + */ + +typedef struct { + ITRON_Objects_Control Object; + unsigned32 XXX_more_stuff_goes_here; +} ITRON_Mailbox_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Mailbox_Information; + +/* + * _ITRON_Mailbox_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Mailbox_Manager_initialization( + unsigned32 maximum_mailboxes +); + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/msgbuffer.h b/cpukit/itron/include/rtems/itron/msgbuffer.h new file mode 100644 index 0000000000..bc559b5a65 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/msgbuffer.h @@ -0,0 +1,60 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_MESSAGEBUFFER_h_ +#define __RTEMS_ITRON_MESSAGEBUFFER_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * The following defines the control block used to manage each + * message buffer. + */ + +typedef struct { + ITRON_Objects_Control Object; + boolean is_priority_blocking; + CORE_message_queue_Control message_queue; +} ITRON_Message_buffer_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Message_buffer_Information; + +/* + * _ITRON_Message_buffer_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Message_buffer_Manager_initialization( + unsigned32 maximum_message_buffers +); + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/itron/include/rtems/itron/network.h b/cpukit/itron/include/rtems/itron/network.h new file mode 100644 index 0000000000..23e1d2f7bf --- /dev/null +++ b/cpukit/itron/include/rtems/itron/network.h @@ -0,0 +1,28 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_NETWORK_h_ +#define __RTEMS_ITRON_NETWORK_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/object.h b/cpukit/itron/include/rtems/itron/object.h new file mode 100644 index 0000000000..71bc9ed6d1 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/object.h @@ -0,0 +1,117 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_OBJECT_h_ +#define __RTEMS_ITRON_OBJECT_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +typedef Objects_Control ITRON_Objects_Control; + +/* + * Maximum length of an ITRON object name + * + * NOTE: Since ITRON objects do not have names, then then length is 0. + */ + +#define ITRON_MAXIMUM_NAME_LENGTH 0 + +/* + * _ITRON_Objects_Open + * + * Make this ITRON object visible to the system. + * + * NOTE: This macro hides the fact that ITRON objects don't have names. + */ + +#define _ITRON_Objects_Open( _the_information, _the_object ) \ + _Objects_Open( (_the_information), (_the_object), 0 ) + +/* + * _ITRON_Objects_Close + * + * Make this ITRON object invisible from the system. Usually used as + * the first step of deleting an object. + */ + +#define _ITRON_Objects_Close( _the_information, _the_object ) \ + _Objects_Close( (_the_information), (_the_object) ) + +/* + * _ITRON_Objects_Allocate_by_index + * + * Allocate the ITRON object specified by "_id". The ITRON id is the + * index portion of the traditional RTEMS ID. The Classic and POSIX + * APIs do not require that a specific object be allocated. + */ + +#define _ITRON_Objects_Allocate_by_index( _the_information, _id, _sizeof ) \ + _Objects_Allocate_by_index( (_the_information), (_id), (_sizeof) ) + +/* + * _ITRON_Objects_Clarify_allocation_id_error + * + * This function is invoked when an object allocation ID error + * occurs to determine the specific ITRON error code to return. + */ + +#define _ITRON_Objects_Clarify_allocation_id_error( _the_information, _id ) \ + (((_id) < -4) ? E_OACV : /* attempt to access a "system object" */ \ + ((_id) <= 0) ? E_ID : /* bogus index of 0 - -3 */ \ + ((_id) <= (_the_information)->maximum) ? E_OBJ : /* object is in use */ \ + E_ID) /* simply a bad id */ + +/* + * _ITRON_Objects_Clarify_get_id_error + * + * This function is invoked when an object get ID error + * occurs to determine the specific ITRON error code to return. + */ + +#define _ITRON_Objects_Clarify_get_id_error( _the_information, _id ) \ + (((_id) < -4) ? E_OACV : /* attempt to access a "system object" */ \ + ((_id) <= 0) ? E_ID : /* bogus index of 0 - -3 */ \ + ((_id) <= (_the_information)->maximum) ? E_OBJ : /* object is in use */ \ + E_ID) /* simply a bad id */ + + +/* + * _ITRON_Objects_Free + * + * Free this ITRON object to the pool of inactive objects. This + * operation is the same as for the Classic and POSIX APIs. + */ + +#define _ITRON_Objects_Free( _the_information, _the_object ) \ + _Objects_Free( (_the_information), (_the_object) ) + + +/* + * _ITRON_Objects_Get + * + * Obtain (get) the pointer to the control block for the object + * specified by "id". The ITRON id passed in here is simply + * the "index" portion of the traditional RTEMS ID. This + * requires that this operation be slightly different + * from the object get used by the Classic and POSIX APIs. + */ + +#define _ITRON_Objects_Get( _the_information, _id, _the_object ) \ + _Objects_Get( (_the_information), (_id), (_the_object) ) + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/port.h b/cpukit/itron/include/rtems/itron/port.h new file mode 100644 index 0000000000..cfa71c8651 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/port.h @@ -0,0 +1,58 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_PORT_h_ +#define __RTEMS_ITRON_PORT_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * The following defines the control block used to manage each port. + */ + +typedef struct { + ITRON_Objects_Control Object; + unsigned32 XXX_more_stuff_goes_here; +} ITRON_Port_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Port_Information; + +/* + * _ITRON_Port_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Port_Manager_initialization( + unsigned32 maximum_ports +); + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/semaphore.h b/cpukit/itron/include/rtems/itron/semaphore.h new file mode 100644 index 0000000000..8bfd1d783a --- /dev/null +++ b/cpukit/itron/include/rtems/itron/semaphore.h @@ -0,0 +1,56 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_SEMAPHORE_h_ +#define __RTEMS_ITRON_SEMAPHORE_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/* + * The following defines the control block used to manage each semaphore. + */ + +typedef struct { + ITRON_Objects_Control Object; + boolean is_priority_blocking; + CORE_semaphore_Control semaphore; +} ITRON_Semaphore_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Semaphore_Information; + +/* + * _ITRON_Semaphore_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Semaphore_Manager_initialization( + unsigned32 maximum_semaphores +); + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/sysmgmt.h b/cpukit/itron/include/rtems/itron/sysmgmt.h new file mode 100644 index 0000000000..92b6cf72db --- /dev/null +++ b/cpukit/itron/include/rtems/itron/sysmgmt.h @@ -0,0 +1,28 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_TIME_h_ +#define __RTEMS_ITRON_TIME_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/task.h b/cpukit/itron/include/rtems/itron/task.h new file mode 100644 index 0000000000..fffcc16d82 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/task.h @@ -0,0 +1,88 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_TASK_h_ +#define __RTEMS_ITRON_TASK_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +/* + * This macro evaluates to TRUE if there should be a "context error." + * This is defined as a blocking directive being issed from + * task-independent portions or a task in dispatch disabled state. + * + * NOTE: Dispatching is disabled in interrupts so this should cover + * both cases. + */ + +#define _ITRON_Is_in_non_task_state() \ + (_Thread_Dispatch_disable_level != 0) + +/* + * This is the API specific information required by each thread for + * the ITRON API to function correctly. + */ + + +typedef struct { + unsigned32 unused; /* no use for the API extension */ + /* structure for ITRON identified yet */ +} ITRON_API_Control; + +/* + * The following defines the information control block used to + * manage this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Task_Information; + +/* + * These are used to manage the user initialization tasks. + */ + +ITRON_EXTERN itron_initialization_tasks_table + *_ITRON_Task_User_initialization_tasks; +ITRON_EXTERN unsigned32 _ITRON_Task_Number_of_initialization_tasks; + + +/* + * _ITRON_Task_Manager_initialization + * + * This routine initializes the ITRON Task Manager. + */ + +void _ITRON_Task_Manager_initialization( + unsigned32 maximum_tasks, + unsigned32 number_of_initialization_tasks, + itron_initialization_tasks_table *user_tasks +); + +/* + * + * _ITRON_Delete_task + */ + +ER _ITRON_Delete_task( + Thread_Control *the_thread +); + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/time.h b/cpukit/itron/include/rtems/itron/time.h new file mode 100644 index 0000000000..0cc2d20101 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/time.h @@ -0,0 +1,28 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_TIME_h_ +#define __RTEMS_ITRON_TIME_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + diff --git a/cpukit/itron/include/rtems/itron/vmempool.h b/cpukit/itron/include/rtems/itron/vmempool.h new file mode 100644 index 0000000000..63bf3310f9 --- /dev/null +++ b/cpukit/itron/include/rtems/itron/vmempool.h @@ -0,0 +1,59 @@ +/* + * 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$ + */ + +#ifndef __RTEMS_ITRON_VARIABLE_MEMORYPOOL_h_ +#define __RTEMS_ITRON_VARIABLE_MEMORYPOOL_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* + * The following defines the control block used to manage each variable + * memory pool. + */ + +typedef struct { + ITRON_Objects_Control Object; + unsigned32 XXX_more_stuff_goes_here; +} ITRON_Variable_memory_pool_Control; + +/* + * The following defines the information control block used to manage + * this class of objects. + */ + +ITRON_EXTERN Objects_Information _ITRON_Variable_memory_pool_Information; + +/* + * _ITRON_Variable_memory_pool_Manager_initialization + * + * DESCRIPTION: + * + * This routine performs the initialization necessary for this manager. + */ + +void _ITRON_Variable_memory_pool_Manager_initialization( + unsigned32 maximum_variable_memory_pools +); + +/* + * XXX insert private stuff here + */ + +#include + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ + -- cgit v1.2.3