summaryrefslogtreecommitdiffstats
path: root/cpukit/itron/include/itronsys/task.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--cpukit/itron/include/itronsys/task.h295
1 files changed, 295 insertions, 0 deletions
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 */
+