This patch adds the basic framework for the ITRON 3.0 API implementation

for RTEMS.
This commit is contained in:
Joel Sherrill
1999-11-09 22:07:23 +00:00
parent 1007c3c8ba
commit 352c9b2035
233 changed files with 18684 additions and 74 deletions
+5 -1
View File
@@ -9,7 +9,11 @@ if HAS_POSIX
POSIX_SUBDIRS = posix
endif
SUBDIRS = score rtems $(POSIX_SUBDIRS) sapi wrapup
if HAS_ITRON
ITRON_SUBDIRS = itron
endif
SUBDIRS = score rtems $(POSIX_SUBDIRS) $(ITRON_SUBDIRS) sapi wrapup
include $(top_srcdir)/../../../automake/subdirs.am
include $(top_srcdir)/../../../automake/local.am
+12 -1
View File
@@ -13,6 +13,7 @@ AM_INIT_AUTOMAKE(rtems-c-src-exec,$RTEMS_VERSION,no)
AM_MAINTAINER_MODE
RTEMS_ENABLE_MULTIPROCESSING
RTEMS_ENABLE_POSIX
RTEMS_ENABLE_ITRON
RTEMS_ENABLE_INLINES
RTEMS_ENABLE_GCC28
RTEMS_ENABLE_LIBCDIR
@@ -34,6 +35,7 @@ RTEMS_CHECK_NEWLIB
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
RTEMS_CHECK_MULTIPROCESSING(RTEMS_BSP)
RTEMS_CHECK_POSIX_API(RTEMS_BSP)
RTEMS_CHECK_ITRON_API(RTEMS_BSP)
# If RTEMS macros are enabled, then use them. Otherwise, use inlines.
if test "$RTEMS_USE_MACROS" = "yes"; then
@@ -42,6 +44,10 @@ if test "$RTEMS_USE_MACROS" = "yes"; then
# The problem is that there is currently no code in posix/macros :)
AC_MSG_ERROR(Macros are not implemented for the POSIX API)
fi
if test "$HAS_ITRON_API" = "yes"; then
# The problem is that there is currently no code in itron/macros :)
AC_MSG_ERROR(Macros are not implemented for the ITRON API)
fi
else
INLINEdir="inline"
fi
@@ -51,9 +57,13 @@ AM_CONDITIONAL(MACROS,test "$INLINEdir" = "macros" )
AC_SUBST(RTEMS_VERSION)
AM_CONDITIONAL(HAS_POSIX,test "$HAS_POSIX_API" = "yes")
AM_CONDITIONAL(HAS_ITRON,test "$HAS_ITRON_API" = "yes")
if test "$HAS_POSIX_API" = "yes"; then
cfg_subdirs="posix"
cfg_subdirs="posix"
fi
if test "$HAS_ITRON_API" = "yes"; then
cfg_subdirs="$cfg_subdirs itron"
fi
AC_CONFIG_SUBDIRS($cfg_subdirs)
AC_CONFIG_SUBDIRS(score/cpu)
@@ -100,5 +110,6 @@ score/macros/rtems/score/Makefile
score/src/Makefile
wrapup/Makefile
wrapup/rtems/Makefile
wrapup/itron/Makefile
wrapup/posix/Makefile
)
+11
View File
@@ -0,0 +1,11 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
ACLOCAL_AMFLAGS = -I $(RTEMS_TOPdir)/aclocal
SUBDIRS = include inline src
include $(top_srcdir)/../../../../automake/subdirs.am
include $(top_srcdir)/../../../../automake/local.am
+78
View File
@@ -0,0 +1,78 @@
dnl Process this file with autoconf to produce a configure script.
dnl
dnl $Id$
AC_PREREQ(2.13)
AC_INIT(include/itronsys)
RTEMS_TOP(../../../..)
AC_CONFIG_AUX_DIR(../../../..)
RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE(rtems-c-src-exec-itron,$RTEMS_VERSION,no)
AM_MAINTAINER_MODE
RTEMS_ENABLE_MULTIPROCESSING
RTEMS_ENABLE_ITRON
RTEMS_ENABLE_INLINES
RTEMS_ENV_RTEMSBSP
RTEMS_CHECK_CPU
RTEMS_CANONICAL_HOST
RTEMS_PROJECT_ROOT
## FIXME: needed for INSTALL_CHANGE in autoconf subdirectories
RTEMS_PATH_KSH
dnl check target cc
RTEMS_PROG_CC_FOR_TARGET
RTEMS_CANONICALIZE_TOOLS
# Check if there is custom/*.cfg for this BSP
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
RTEMS_CHECK_MULTIPROCESSING(RTEMS_BSP)
RTEMS_CHECK_ITRON_API(RTEMS_BSP)
# If RTEMS macros are enabled, then use them. Otherwise, use inlines.
if test "$RTEMS_USE_MACROS" = "yes"; then
INLINEdir="macros"
if test "$HAS_ITRON_API" = "yes"; then
# The problem is that there is currently no code in itron/macros :)
AC_MSG_ERROR(Macros are not implemented for the ITRON API)
fi
else
INLINEdir="inline"
fi
AM_CONDITIONAL(INLINE,test "$INLINEdir" = "inline" )
AM_CONDITIONAL(MACROS,test "$INLINEdir" = "macros" )
## Needed when using automake for libs/rels
RTEMS_CHECK_NEWLIB
# If RTEMS macros are enabled, then use them. Otherwise, refuse to build
if test "$RTEMS_USE_MACROS" = "yes"; then
# The problem is that there is currently no code in itron/macros :)
AC_MSG_ERROR(Macros are not implemented for the ITRON API)
fi
PROJECT_INCLUDE="\$(PROJECT_ROOT)/$RTEMS_BSP/lib/include"
AC_SUBST(PROJECT_INCLUDE)
##
## FIXME: We configure and build the macros subdirectory, too.
## Should probably use AM_CONDITIONALs to disable them in future
# Try to explicitly list a Makefile here
AC_OUTPUT(
Makefile
src/Makefile
include/Makefile
include/itronsys/Makefile
include/rtems/Makefile
include/rtems/itron/Makefile
inline/Makefile
inline/rtems/Makefile
inline/rtems/itron/Makefile
)
+27
View File
@@ -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
+49
View File
@@ -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 */
@@ -0,0 +1,25 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
H_PIECES = eventflags.h fmempool.h intr.h mbox.h msgbuffer.h network.h \
port.h semaphore.h status.h sysmgmt.h task.h time.h types.h vmempool.h
noinst_HEADERS = $(H_PIECES)
TMPINSTALL_FILES = \
$(PROJECT_INCLUDE)/itronsys \
$(noinst_HEADERS:%=$(PROJECT_INCLUDE)/itronsys/%)
$(PROJECT_INCLUDE)/itronsys:
@$(mkinstalldirs) $@
$(PROJECT_INCLUDE)/itronsys/%.h: %.h
$(INSTALL_DATA) $< $@
all-am: $(TMPINSTALL_FILES)
debug-am: $(TMPINSTALL_FILES)
profile-am: $(TMPINSTALL_FILES)
include $(top_srcdir)/../../../../automake/local.am
+9
View File
@@ -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.
@@ -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 */
@@ -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 */
+103
View File
@@ -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 */
+131
View File
@@ -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 */
@@ -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 */
@@ -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 */
+187
View File
@@ -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 */
@@ -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 */
@@ -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 */
+316
View File
@@ -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 */
+295
View File
@@ -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 */
+182
View File
@@ -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 */
+114
View File
@@ -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 */
@@ -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 */
@@ -0,0 +1,10 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
SUBDIRS = itron
include $(top_srcdir)/../../../../automake/subdirs.am
include $(top_srcdir)/../../../../automake/local.am
@@ -0,0 +1,28 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
H_PIECES = config.h eventflags.h fmempool.h intr.h itronapi.h mbox.h \
msgbuffer.h network.h object.h port.h semaphore.h sysmgmt.h \
task.h time.h vmempool.h
noinst_HEADERS = $(H_PIECES)
TMPINSTALL_FILES = \
$(PROJECT_INCLUDE)/rtems/itron \
$(H_PIECES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
$(PROJECT_INCLUDE)/rtems/itron:
@$(mkinstalldirs) $@
$(PROJECT_INCLUDE)/rtems/itron/%.h: %.h
$(INSTALL_DATA) $< $@
all-am: $(TMPINSTALL_FILES)
debug-am: $(TMPINSTALL_FILES)
profile-am: $(TMPINSTALL_FILES)
EXTRA_DIST = README
include $(top_srcdir)/../../../../automake/local.am
@@ -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.
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
@@ -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 */
+10
View File
@@ -0,0 +1,10 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
SUBDIRS = rtems
include $(top_srcdir)/../../../../automake/subdirs.am
include $(top_srcdir)/../../../../automake/local.am
+10
View File
@@ -0,0 +1,10 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
SUBDIRS = itron
include $(top_srcdir)/../../../../automake/subdirs.am
include $(top_srcdir)/../../../../automake/local.am
@@ -0,0 +1,27 @@
##
## $Id$
##
AUTOMAKE_OPTIONS = foreign 1.4
if INLINE
I_PIECES = eventflags.inl fmempool.inl intr.inl mbox.inl msgbuffer.inl \
network.inl port.inl semaphore.inl sysmgmt.inl task.inl \
time.inl vmempool.inl
noinst_HEADERS = $(I_PIECES)
TMPINSTALL_FILES = \
$(PROJECT_INCLUDE)/rtems/itron \
$(I_PIECES:%=$(PROJECT_INCLUDE)/rtems/itron/%)
$(PROJECT_INCLUDE)/rtems/itron:
@$(mkinstalldirs) $@
$(PROJECT_INCLUDE)/rtems/itron/%.inl: %.inl
$(INSTALL_DATA) $< $@
endif
all-am: $(TMPINSTALL_FILES)
debug-am: $(TMPINSTALL_FILES)
profile-am: $(TMPINSTALL_FILES)
include $(top_srcdir)/../../../../automake/local.am
@@ -0,0 +1,148 @@
/*
* 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_inl_
#define __ITRON_EVENTFLAGS_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* _ITRON_Eventflags_Allocate
*
* DESCRIPTION:
*
* This routine allocates the eventflags associated with the specified
* eventflags ID from the pool of inactive eventflagss.
*
* Input parameters:
* flgid - id of eventflags to allocate
* status - pointer to status variable
*
* Output parameters:
* returns - pointer to the eventflags control block
* *status - status
*/
RTEMS_INLINE_ROUTINE ITRON_Eventflags_Control *_ITRON_Eventflags_Allocate(
ID flgid
)
{
return (ITRON_Eventflags_Control *)_ITRON_Objects_Allocate_by_index(
&_ITRON_Eventflags_Information,
flgid,
sizeof(ITRON_Eventflags_Control)
);
}
/*
* _ITRON_Eventflags_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_Eventflags_Clarify_allocation_id_error( _id ) \
_ITRON_Objects_Clarify_allocation_id_error( \
&_ITRON_Eventflags_Information, (_id) )
/*
* _ITRON_Eventflags_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_Eventflags_Clarify_get_id_error( _id ) \
_ITRON_Objects_Clarify_get_id_error( &_ITRON_Eventflags_Information, (_id) )
/*
* _ITRON_Eventflags_Free
*
* DESCRIPTION:
*
* This routine frees a eventflags control block to the
* inactive chain of free eventflags control blocks.
*
* Input parameters:
* the_eventflags - pointer to eventflags control block
*
* Output parameters: NONE
*/
RTEMS_INLINE_ROUTINE void _ITRON_Eventflags_Free (
ITRON_Eventflags_Control *the_eventflags
)
{
_ITRON_Objects_Free( &_ITRON_Eventflags_Information, &the_eventflags->Object );
}
/*PAGE
*
* _ITRON_Eventflags_Get
*
* DESCRIPTION:
*
* This function maps eventflags IDs to eventflags control blocks.
* If ID corresponds to a local eventflags, then it returns
* the_eventflags control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. if the eventflags ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the_eventflags is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_eventflags is undefined.
*
* Input parameters:
* id - ITRON eventflags ID.
* the_location - pointer to a location variable
*
* Output parameters:
* *the_location - location of the object
*/
RTEMS_INLINE_ROUTINE ITRON_Eventflags_Control *_ITRON_Eventflags_Get (
ID id,
Objects_Locations *location
)
{
return (ITRON_Eventflags_Control *)
_ITRON_Objects_Get( &_ITRON_Eventflags_Information, id, location );
}
/*PAGE
*
* _ITRON_Eventflags_Is_null
*
* This function returns TRUE if the_eventflags is NULL and FALSE otherwise.
*
* Input parameters:
* the_eventflags - pointer to eventflags control block
*
* Output parameters:
* TRUE - if the_eventflags is NULL
* FALSE - otherwise
*/
RTEMS_INLINE_ROUTINE boolean _ITRON_Eventflags_Is_null (
ITRON_Eventflags_Control *the_eventflags
)
{
return ( the_eventflags == NULL );
}
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
@@ -0,0 +1,155 @@
/*
* 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_MEMORY_POOL_inl_
#define __ITRON_FIXED_MEMORY_POOL_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* _ITRON_Fixed_memory_pool_Allocate
*
* DESCRIPTION:
*
* This routine allocates the fixed_memory_pool associated with the specified
* fixed_memory_pool ID from the pool of inactive fixed_memory_pools.
*
* Input parameters:
* mpfid - id of fixed_memory_pool to allocate
* status - pointer to status variable
*
* Output parameters:
* returns - pointer to the fixed_memory_pool control block
* *status - status
*/
RTEMS_INLINE_ROUTINE ITRON_Fixed_memory_pool_Control
*_ITRON_Fixed_memory_pool_Allocate(
ID mpfid
)
{
return (ITRON_Fixed_memory_pool_Control *)_ITRON_Objects_Allocate_by_index(
&_ITRON_Fixed_memory_pool_Information,
mpfid,
sizeof(ITRON_Fixed_memory_pool_Control)
);
}
/*
* _ITRON_Fixed_memory_pool_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_Fixed_memory_pool_Clarify_allocation_id_error( _id ) \
_ITRON_Objects_Clarify_allocation_id_error( \
&_ITRON_Fixed_memory_pool_Information, (_id) )
/*
* _ITRON_Fixed_memory_pool_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_Fixed_memory_pool_Clarify_get_id_error( _id ) \
_ITRON_Objects_Clarify_get_id_error( \
&_ITRON_Fixed_memory_pool_Information, (_id) )
/*
* _ITRON_Fixed_memory_pool_Free
*
* DESCRIPTION:
*
* This routine frees a fixed_memory_pool control block to the
* inactive chain of free fixed_memory_pool control blocks.
*
* Input parameters:
* the_fixed_memory_pool - pointer to fixed_memory_pool control block
*
* Output parameters: NONE
*/
RTEMS_INLINE_ROUTINE void _ITRON_Fixed_memory_pool_Free (
ITRON_Fixed_memory_pool_Control *the_fixed_memory_pool
)
{
_ITRON_Objects_Free(
&_ITRON_Fixed_memory_pool_Information,
&the_fixed_memory_pool->Object
);
}
/*PAGE
*
* _ITRON_Fixed_memory_pool_Get
*
* DESCRIPTION:
*
* This function maps fixed memory pool IDs to control blocks.
* If ID corresponds to a local fixed memory pool, then it returns
* the_fixed memory pool control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. if the fixed memory pool ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the fixed memory pool is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the fixed memory pool is undefined.
*
* Input parameters:
* id - ITRON fixed memory pool ID.
* the_location - pointer to a location variable
*
* Output parameters:
* *the_location - location of the object
*/
RTEMS_INLINE_ROUTINE ITRON_Fixed_memory_pool_Control
*_ITRON_Fixed_memory_pool_Get (
ID id,
Objects_Locations *location
)
{
return (ITRON_Fixed_memory_pool_Control *)
_ITRON_Objects_Get( &_ITRON_Fixed_memory_pool_Information, id, location );
}
/*PAGE
*
* _ITRON_Fixed_memory_pool_Is_null
*
* This function returns TRUE if the_fixed_memory_pool is NULL
* and FALSE otherwise.
*
* Input parameters:
* the_fixed_memory_pool - pointer to fixed_memory_pool control block
*
* Output parameters:
* TRUE - if the_fixed_memory_pool is NULL
* FALSE - otherwise
*/
RTEMS_INLINE_ROUTINE boolean _ITRON_Fixed_memory_pool_Is_null (
ITRON_Fixed_memory_pool_Control *the_fixed_memory_pool
)
{
return ( the_fixed_memory_pool == NULL );
}
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
@@ -0,0 +1,27 @@
/*
* 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_inl_
#define __ITRON_INTERRUPT_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
@@ -0,0 +1,148 @@
/*
* 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_MAILBOX_inl_
#define __ITRON_MAILBOX_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* _ITRON_Mailbox_Allocate
*
* DESCRIPTION:
*
* This routine allocates the mailbox associated with the specified
* mailbox ID from the pool of inactive mailboxs.
*
* Input parameters:
* mbxid - id of mailbox to allocate
* status - pointer to status variable
*
* Output parameters:
* returns - pointer to the mailbox control block
* *status - status
*/
RTEMS_INLINE_ROUTINE ITRON_Mailbox_Control *_ITRON_Mailbox_Allocate(
ID mbxid
)
{
return (ITRON_Mailbox_Control *)_ITRON_Objects_Allocate_by_index(
&_ITRON_Mailbox_Information,
mbxid,
sizeof(ITRON_Mailbox_Control)
);
}
/*
* _ITRON_Mailbox_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_Mailbox_Clarify_allocation_id_error( _id ) \
_ITRON_Objects_Clarify_allocation_id_error( \
&_ITRON_Mailbox_Information, (_id) )
/*
* _ITRON_Mailbox_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_Mailbox_Clarify_get_id_error( _id ) \
_ITRON_Objects_Clarify_get_id_error( &_ITRON_Mailbox_Information, (_id) )
/*
* _ITRON_Mailbox_Free
*
* DESCRIPTION:
*
* This routine frees a mailbox control block to the
* inactive chain of free mailbox control blocks.
*
* Input parameters:
* the_mailbox - pointer to mailbox control block
*
* Output parameters: NONE
*/
RTEMS_INLINE_ROUTINE void _ITRON_Mailbox_Free (
ITRON_Mailbox_Control *the_mailbox
)
{
_ITRON_Objects_Free( &_ITRON_Mailbox_Information, &the_mailbox->Object );
}
/*PAGE
*
* _ITRON_Mailbox_Get
*
* DESCRIPTION:
*
* This function maps mailbox IDs to mailbox control blocks.
* If ID corresponds to a local mailbox, then it returns
* the_mailbox control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. if the mailbox ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the_mailbox is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_mailbox is undefined.
*
* Input parameters:
* id - ITRON mailbox ID.
* the_location - pointer to a location variable
*
* Output parameters:
* *the_location - location of the object
*/
RTEMS_INLINE_ROUTINE ITRON_Mailbox_Control *_ITRON_Mailbox_Get (
ID id,
Objects_Locations *location
)
{
return (ITRON_Mailbox_Control *)
_ITRON_Objects_Get( &_ITRON_Mailbox_Information, id, location );
}
/*PAGE
*
* _ITRON_Mailbox_Is_null
*
* This function returns TRUE if the_mailbox is NULL and FALSE otherwise.
*
* Input parameters:
* the_mailbox - pointer to mailbox control block
*
* Output parameters:
* TRUE - if the_mailbox is NULL
* FALSE - otherwise
*/
RTEMS_INLINE_ROUTINE boolean _ITRON_Mailbox_Is_null (
ITRON_Mailbox_Control *the_mailbox
)
{
return ( the_mailbox == NULL );
}
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
@@ -0,0 +1,153 @@
/*
* 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_MESSAGE_BUFFER_inl_
#define __ITRON_MESSAGE_BUFFER_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* _ITRON_Message_buffer_Allocate
*
* DESCRIPTION:
*
* This routine allocates the message buffer associated with the specified
* message buffer ID from the pool of inactive message buffers.
*
* Input parameters:
* mbfid - id of message buffer to allocate
* status - pointer to status variable
*
* Output parameters:
* returns - pointer to the message buffer control block
* *status - status
*/
RTEMS_INLINE_ROUTINE ITRON_Message_buffer_Control
*_ITRON_Message_buffer_Allocate(
ID mbfid
)
{
return (ITRON_Message_buffer_Control *)_ITRON_Objects_Allocate_by_index(
&_ITRON_Message_buffer_Information,
mbfid,
sizeof(ITRON_Message_buffer_Control)
);
}
/*
* _ITRON_Message_buffer_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_Message_buffer_Clarify_allocation_id_error( _id ) \
_ITRON_Objects_Clarify_allocation_id_error( \
&_ITRON_Message_buffer_Information, (_id) )
/*
* _ITRON_Message_buffer_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_Message_buffer_Clarify_get_id_error( _id ) \
_ITRON_Objects_Clarify_get_id_error( &_ITRON_Message_buffer_Information, (_id) )
/*
* _ITRON_Message_buffer_Free
*
* DESCRIPTION:
*
* This routine frees a message buffer control block to the
* inactive chain of free message buffer control blocks.
*
* Input parameters:
* the_message_buffer - pointer to message_buffer control block
*
* Output parameters: NONE
*/
RTEMS_INLINE_ROUTINE void _ITRON_Message_buffer_Free (
ITRON_Message_buffer_Control *the_message_buffer
)
{
_ITRON_Objects_Free(
&_ITRON_Message_buffer_Information,
&the_message_buffer->Object
);
}
/*PAGE
*
* _ITRON_Message_buffer_Get
*
* DESCRIPTION:
*
* This function maps message buffer IDs to message buffer control blocks.
* If ID corresponds to a local message buffer, then it returns
* the message buffer control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. if the message buffer ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the message buffer is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the message buffer is undefined.
*
* Input parameters:
* id - ITRON message_buffer ID.
* the_location - pointer to a location variable
*
* Output parameters:
* *the_location - location of the object
*/
RTEMS_INLINE_ROUTINE ITRON_Message_buffer_Control *_ITRON_Message_buffer_Get (
ID id,
Objects_Locations *location
)
{
return (ITRON_Message_buffer_Control *)
_ITRON_Objects_Get( &_ITRON_Message_buffer_Information, id, location );
}
/*PAGE
*
* _ITRON_Message_buffer_Is_null
*
* This function returns TRUE if the_message_buffer is NULL
* and FALSE otherwise.
*
* Input parameters:
* the_message_buffer - pointer to message buffer control block
*
* Output parameters:
* TRUE - if the_message_buffer is NULL
* FALSE - otherwise
*/
RTEMS_INLINE_ROUTINE boolean _ITRON_Message_buffer_Is_null (
ITRON_Message_buffer_Control *the_message_buffer
)
{
return ( the_message_buffer == NULL );
}
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
@@ -0,0 +1,27 @@
/*
* 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_inl_
#define __ITRON_NETWORK_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */
@@ -0,0 +1,148 @@
/*
* 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_inl_
#define __ITRON_PORT_inl_
#ifdef __cplusplus
extern "C" {
#endif
/*
* _ITRON_Port_Allocate
*
* DESCRIPTION:
*
* This routine allocates the port associated with the specified
* port ID from the pool of inactive ports.
*
* Input parameters:
* porid - id of port to allocate
* status - pointer to status variable
*
* Output parameters:
* returns - pointer to the port control block
* *status - status
*/
RTEMS_INLINE_ROUTINE ITRON_Port_Control *_ITRON_Port_Allocate(
ID porid
)
{
return (ITRON_Port_Control *)_ITRON_Objects_Allocate_by_index(
&_ITRON_Port_Information,
porid,
sizeof(ITRON_Port_Control)
);
}
/*
* _ITRON_Port_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_Port_Clarify_allocation_id_error( _id ) \
_ITRON_Objects_Clarify_allocation_id_error( \
&_ITRON_Port_Information, (_id) )
/*
* _ITRON_Port_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_Port_Clarify_get_id_error( _id ) \
_ITRON_Objects_Clarify_get_id_error( &_ITRON_Port_Information, (_id) )
/*
* _ITRON_Port_Free
*
* DESCRIPTION:
*
* This routine frees a port control block to the
* inactive chain of free port control blocks.
*
* Input parameters:
* the_port - pointer to port control block
*
* Output parameters: NONE
*/
RTEMS_INLINE_ROUTINE void _ITRON_Port_Free (
ITRON_Port_Control *the_port
)
{
_ITRON_Objects_Free( &_ITRON_Port_Information, &the_port->Object );
}
/*PAGE
*
* _ITRON_Port_Get
*
* DESCRIPTION:
*
* This function maps port IDs to port control blocks.
* If ID corresponds to a local port, then it returns
* the_port control pointer which maps to ID and location
* is set to OBJECTS_LOCAL. if the port ID is global and
* resides on a remote node, then location is set to OBJECTS_REMOTE,
* and the_port is undefined. Otherwise, location is set
* to OBJECTS_ERROR and the_port is undefined.
*
* Input parameters:
* id - ITRON port ID.
* the_location - pointer to a location variable
*
* Output parameters:
* *the_location - location of the object
*/
RTEMS_INLINE_ROUTINE ITRON_Port_Control *_ITRON_Port_Get (
ID id,
Objects_Locations *location
)
{
return (ITRON_Port_Control *)
_ITRON_Objects_Get( &_ITRON_Port_Information, id, location );
}
/*PAGE
*
* _ITRON_Port_Is_null
*
* This function returns TRUE if the_port is NULL and FALSE otherwise.
*
* Input parameters:
* the_port - pointer to port control block
*
* Output parameters:
* TRUE - if the_port is NULL
* FALSE - otherwise
*/
RTEMS_INLINE_ROUTINE boolean _ITRON_Port_Is_null (
ITRON_Port_Control *the_port
)
{
return ( the_port == NULL );
}
/*
* XXX insert inline routines here
*/
#ifdef __cplusplus
}
#endif
#endif
/* end of include file */

Some files were not shown because too many files have changed in this diff Show More