summaryrefslogtreecommitdiffstats
path: root/cpukit/itron/include
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-09 22:07:23 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-09 22:07:23 +0000
commit352c9b2035e32e56f10f261d94955d97f4ab0f1c (patch)
treef433e95ae0ab8d8854ea19b7f4bfab3ffb431726 /cpukit/itron/include
parentFixed warning where initialized default POSIX API structure did (diff)
downloadrtems-352c9b2035e32e56f10f261d94955d97f4ab0f1c.tar.bz2
This patch adds the basic framework for the ITRON 3.0 API implementation
for RTEMS.
Diffstat (limited to 'cpukit/itron/include')
-rw-r--r--cpukit/itron/include/Makefile.am27
-rw-r--r--cpukit/itron/include/itron.h49
-rw-r--r--cpukit/itron/include/itronsys/README9
-rw-r--r--cpukit/itron/include/itronsys/eventflags.h143
-rw-r--r--cpukit/itron/include/itronsys/fmempool.h122
-rw-r--r--cpukit/itron/include/itronsys/intr.h103
-rw-r--r--cpukit/itron/include/itronsys/mbox.h131
-rw-r--r--cpukit/itron/include/itronsys/msgbuffer.h157
-rw-r--r--cpukit/itron/include/itronsys/network.h75
-rw-r--r--cpukit/itron/include/itronsys/port.h187
-rw-r--r--cpukit/itron/include/itronsys/semaphore.h118
-rw-r--r--cpukit/itron/include/itronsys/status.h67
-rw-r--r--cpukit/itron/include/itronsys/sysmgmt.h316
-rw-r--r--cpukit/itron/include/itronsys/task.h295
-rw-r--r--cpukit/itron/include/itronsys/time.h182
-rw-r--r--cpukit/itron/include/itronsys/types.h114
-rw-r--r--cpukit/itron/include/itronsys/vmempool.h129
-rw-r--r--cpukit/itron/include/rtems/itron/README10
-rw-r--r--cpukit/itron/include/rtems/itron/config.h63
-rw-r--r--cpukit/itron/include/rtems/itron/eventflags.h58
-rw-r--r--cpukit/itron/include/rtems/itron/fmempool.h59
-rw-r--r--cpukit/itron/include/rtems/itron/intr.h28
-rw-r--r--cpukit/itron/include/rtems/itron/itronapi.h27
-rw-r--r--cpukit/itron/include/rtems/itron/mbox.h58
-rw-r--r--cpukit/itron/include/rtems/itron/msgbuffer.h60
-rw-r--r--cpukit/itron/include/rtems/itron/network.h28
-rw-r--r--cpukit/itron/include/rtems/itron/object.h117
-rw-r--r--cpukit/itron/include/rtems/itron/port.h58
-rw-r--r--cpukit/itron/include/rtems/itron/semaphore.h56
-rw-r--r--cpukit/itron/include/rtems/itron/sysmgmt.h28
-rw-r--r--cpukit/itron/include/rtems/itron/task.h88
-rw-r--r--cpukit/itron/include/rtems/itron/time.h28
-rw-r--r--cpukit/itron/include/rtems/itron/vmempool.h59
33 files changed, 3049 insertions, 0 deletions
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 <rtems/system.h> /* basic RTEMS types defined by */
+ /* each port */
+#include <itronsys/types.h> /* define all the TRON types */
+ /* in terms of the RTEMS base types */
+#include <itronsys/status.h> /* define all ITRON status codes */
+
+/*
+ * Now include the per manager include files
+ */
+
+#include <itronsys/eventflags.h>
+#include <itronsys/fmempool.h>
+#include <itronsys/intr.h>
+#include <itronsys/mbox.h>
+#include <itronsys/msgbuffer.h>
+#include <itronsys/sysmgmt.h> /* network depends on this file */
+#include <itronsys/network.h>
+#include <itronsys/port.h>
+#include <itronsys/semaphore.h>
+#include <itronsys/task.h>
+#include <itronsys/time.h>
+#include <itronsys/vmempool.h>
+
+#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 <itron.h>.
+
+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 (<<L1R>> TRON-specification chip)
+#define (0x6) reserved (<<L1>> 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 <itronsys/task.h>
+ */
+
+#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 <rtems/itron/object.h>
+
+/*
+ * 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 <rtems/itron/eventflags.inl>
+
+#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 <rtems/itron/object.h>
+
+/*
+ * 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 <rtems/itron/fmempool.inl>
+
+#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 <rtems/itron/intr.inl>
+
+#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 <rtems/config.h>
+
+/*
+ * _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 <rtems/itron/object.h>
+
+/*
+ * 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 <rtems/itron/mbox.inl>
+
+#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 <rtems/itron/object.h>
+#include <rtems/score/coremsg.h>
+
+/*
+ * 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 <rtems/itron/msgbuffer.inl>
+
+#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 <rtems/itron/network.inl>
+
+#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 <rtems/score/object.h>
+
+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 <rtems/itron/object.h>
+
+/*
+ * 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 <rtems/itron/port.inl>
+
+#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 <rtems/itron/object.h>
+#include <rtems/score/coresem.h>
+
+/*
+ * 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 <rtems/itron/semaphore.inl>
+
+#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 <rtems/itron/sysmgmt.inl>
+
+#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 <rtems/itron/object.h>
+#include <rtems/itron/config.h>
+#include <rtems/score/thread.h>
+
+/*
+ * 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 <rtems/itron/task.inl>
+
+#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 <rtems/itron/time.inl>
+
+#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 <rtems/itron/object.h>
+
+/*
+ * 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 <rtems/itron/vmempool.inl>
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */
+