• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

uITRON3のシステムコールをシュミレーションする、uITRON3向けモジュールの単体テスト用ライブラリ。


Commit MetaInfo

Revisiond486af99647f55faad55907d222a19422804105a (tree)
Time2012-12-11 01:36:34
Authornikarana <nikarana@gmai...>
Commiternikarana

Log Message

includes commit.

Change Summary

Incremental Difference

--- /dev/null
+++ b/include/it3.h
@@ -0,0 +1,32 @@
1+#ifndef _IT3_H_
2+#define _IT3_H_
3+
4+#if defined(__cplusplus)
5+extern "C" {
6+#endif /* defined(__cplusplus) */
7+
8+#include <itron.h>
9+
10+typedef struct S_IT3_ARG
11+{
12+ /* ハードウェア依存の初期化処理 */
13+ ER (*pf_hw_init)(void);
14+
15+ /* ユーザースタートアップ */
16+ ER (*pf_startup)(void);
17+
18+ /* ハードウェアの終了処理 */
19+ ER (*pf_hw_term)(void);
20+} T_IT3_ARG;
21+
22+/* カーネルのエントリーポイント */
23+ER IT3_main(const T_IT3_ARG *p_arg);
24+
25+/* 割込み信号設定 */
26+ER IT3_interrupt_signel(UINT intno);
27+
28+#if defined(__cplusplus)
29+}
30+#endif /* defined(__cplusplus) */
31+
32+#endif /* _IT3_H_ */
--- /dev/null
+++ b/include/itron.h
@@ -0,0 +1,850 @@
1+/*
2+******************************************************************************
3+
4+ uITRON3 C言語インタフェース用ヘッダファイル
5+
6+ uITRON 3.0仕様 Ver. 3.02.02
7+
8+******************************************************************************
9+*/
10+#ifndef _ITRON_H_
11+#define _ITRON_H_
12+
13+#ifdef __cplusplus
14+extern "C" {
15+#endif /* __cplusplus */
16+
17+/*
18+==============================================================================
19+ 汎用的なデータタイプ
20+==============================================================================
21+*/
22+typedef signed char B; /* 符号付き8ビット整数 */
23+typedef signed short H; /* 符号付き16ビット整数 */
24+typedef signed long W; /* 符号付き32ビット整数 */
25+typedef unsigned char UB; /* 符号なし8ビット整数 */
26+typedef unsigned short UH; /* 符号なし16ビット整数 */
27+typedef unsigned long UW; /* 符号なし32ビット整数 */
28+
29+typedef char VB; /* データタイプが一定しないもの(8ビットサイズ) */
30+typedef short VH; /* データタイプが一定しないもの(16ビットサイズ) */
31+typedef long VW; /* データタイプが一定しないもの(32ビットサイズ) */
32+typedef void *VP; /* データタイプが一定しないものへのポインタ */
33+
34+typedef void (*FP)(); /* プログラムのスタートアドレス一般 */
35+
36+/*
37+==============================================================================
38+ ITRONに依存した意味を持つデータタイプ
39+==============================================================================
40+*/
41+#ifdef INT
42+#undef INT
43+#endif /* INT*/
44+typedef signed int INT; /* 符号付き整数(プロセッサのビット幅) */
45+
46+#ifdef UINT
47+#undef UINT
48+#endif /* UINT*/
49+typedef unsigned int UINT; /* 符号無し整数(プロセッサのビット幅) */
50+
51+#ifdef BOOL
52+#undef BOOL
53+#endif /* BOOL */
54+typedef INT BOOL; /* ブール値。FALSE(0-偽)またはTRUE(1-真) */
55+
56+typedef H FN; /* 機能コード */
57+typedef INT ID; /* オブジェクトのID番号 */
58+typedef INT BOOL_ID; /* ブール値またはID番号 */
59+typedef INT HNO; /* ハンドラ番号 */
60+typedef INT RNO; /* ランデブ番号 */
61+typedef INT NODE; /* ノード番号 */
62+typedef UINT ATR; /* オブジェクト属性、ハンドラ属性 */
63+typedef INT ER; /* エラーコード */
64+typedef INT PRI; /* タスク優先度 */
65+typedef INT TMO; /* タイムアウト */
66+
67+/*
68+==============================================================================
69+ エラーコード
70+==============================================================================
71+*/
72+#define E_OK (0) /* 正常終了 */
73+#define E_SYS (-5) /* システムエラー */
74+#define E_NOMEM (-10) /* メモリ不足 */
75+#define E_NOSPT (-17) /* 未サポート機能 */
76+#define E_INOSPT (-18) /* ITRON/FILEでの未サポート機能 */
77+#define E_RSFN (-20) /* 予約機能コード番号 */
78+#define E_RSATR (-24) /* 予約属性 */
79+#define E_PAR (-33) /* パラメータエラー */
80+#define E_ID (-35) /* 不正ID番号 */
81+#define E_NOEXS (-52) /* オブジェクトが存在していない */
82+#define E_OBJ (-63) /* オブジェクトの状態が不正 */
83+#define E_MACV (-65) /* メモリアクセス不能、メモリアクセス権違反 */
84+#define E_OACV (-66) /* オブジェクトアクセス権違反 */
85+#define E_CTX (-69) /* コンテキストエラー */
86+#define E_QOVR (-73) /* キューイングまたはネストのオーバーフロー */
87+#define E_DLT (-81) /* 待ちオブジェクトが削除された */
88+#define E_TMOUT (-85) /* ポーリング失敗またはタイムアウト */
89+#define E_RLWAI (-86) /* 待ち状態強制解除 */
90+
91+#define EN_NOND (-113) /* 対象ノードが存在しない、対象ノードにアクセスできない */
92+#define EN_OBJNO (-114) /* 対象ノード側でアクセスできないオブジェクト番号を指定 */
93+#define EN_PROTO (-115) /* 対象ノードでサポートされていないプロトコル */
94+#define EN_RSFN (-116) /* 対象ノードでサポートされていないシステムコール */
95+#define EN_COMM (-117) /* 対象ノードからの応答が無い */
96+#define EN_RLWAI (-118) /* 接続機能応答待ち状態の強制解除 */
97+#define EN_PAR (-119) /* 対象ノードや通信パケットでサポートされていない範囲の値をパラメータとして指定した */
98+#define EN_RPAR (-120) /* 要求ノードや通信パケットでサポートされていない範囲の値がリターンパラメータとして返された */
99+#define EN_CTXID (-121) /* タスク独立部あるいはディスパッチ禁止状態のタスクから発行されたシステムコールで他ノード上のオブジェクトを指定 */
100+#define EN_EXEC (-122) /* 対象ノードにおける資源不足のため実行できない */
101+#define EN_NOSPT (-123) /* サポートされていない接続機能 */
102+
103+/*
104+==============================================================================
105+ 共通定数と構造体パケット形式
106+==============================================================================
107+*/
108+/*--- 全体 -----------------------------------------------------------------*/
109+
110+#define NADR (-1) /* アドレスやポインタ値が無効 */
111+
112+#ifdef TRUE
113+#undef TRUE
114+#endif /* TRUE */
115+#define TRUE (1) /* 真 */
116+
117+#ifdef FALSE
118+#undef FALSE
119+#endif /* FALSE */
120+#define FALSE (0) /* 偽 */
121+
122+/* ATR tskatr, intatr, cycatr, almatr, svcatr, excatr */
123+#define TA_ASM (0x00000000) /* アセンブラによるプログラム */
124+#define TA_HLNG (0x00000001) /* 高級言語によるプログラム */
125+
126+/* TMOUT tmout */
127+#define TMO_POL (0) /* ポーリング */
128+#define TMO_FEVR (-1) /* 永久待ち */
129+
130+/* poratr */
131+#define TA_NULL (0) /* 特別な属性を指定しない */
132+
133+/* sematr, mbxatr, mbfatr, mplatr, mpfatr */
134+#define TA_TFIFO (0x00000000) /* 待ちタスクはFIFO */
135+#define TA_TPRI (0x00000001) /* 待ちタスクは優先度順 */
136+/* mbxatr */
137+#define TA_MFIFO (0x00000000) /* メッセージはFIFO */
138+#define TA_MPRI (0x00000002) /* メッセージは優先度順 */
139+
140+
141+/*--- タスク管理関係 --------------------------------------------------------*/
142+/* cre_tsk */
143+typedef struct t_ctsk {
144+ VP exinf; /* 拡張情報 */
145+ ATR tskatr; /* タスク属性 */
146+ FP task; /* タスク起動アドレス */
147+ PRI itskpri; /* タスク起動時優先度 */
148+ INT stksz; /* スタックサイズ */
149+
150+ /* インプリメントによっては、以下に追加情報が入る */
151+
152+} T_CTSK;
153+
154+/* tskatr */
155+#define TA_COP0 (0x00008000) /* ID=0のコプロセッサを使用 */
156+#define TA_COP1 (0x00004000) /* ID=1のコプロセッサを使用 */
157+#define TA_COP2 (0x00002000) /* ID=2のコプロセッサを使用 */
158+#define TA_COP3 (0x00001000) /* ID=3のコプロセッサを使用 */
159+#define TA_COP4 (0x00000800) /* ID=4のコプロセッサを使用 */
160+#define TA_COP5 (0x00000400) /* ID=5のコプロセッサを使用 */
161+#define TA_COP6 (0x00000200) /* ID=6のコプロセッサを使用 */
162+#define TA_COP7 (0x00000100) /* ID=7のコプロセッサを使用 */
163+
164+/* tskid */
165+#define TSK_SELF (0) /* 自タスク指定 */
166+
167+/* tskpri */
168+#define TPRI_INI (0) /* タスク起動時の初期優先度を指定(chg_pri) */
169+#define TPRI_RUN (0) /* その時実行中の最高優先度を指定(rot_rdq) */
170+
171+/* ref_tsk */
172+typedef struct t_rtsk {
173+ VP exinf; /* 拡張情報 */
174+ PRI tskpri; /* 現在の優先度 */
175+ UINT tskstat; /* タスク状態 */
176+
177+ /* 以下は[レベルX]の拡張機能(インプリメント依存) */
178+
179+ UINT tskwait; /* 待ち要因 */
180+ ID wid; /* 待ちオブジェクトID */
181+ INT wupcnt; /* 起床要求カウント */
182+ INT suscnt; /* SUSPEND要求カウント */
183+ ATR tskatr; /* タスク属性 */
184+ FP task; /* タスク起動アドレス */
185+ PRI itskpri; /* タスク起動時優先度 */
186+ INT stksz; /* スタックサイズ */
187+} T_RTSK;
188+
189+/* tskstat */
190+#define TTS_RUN (0x00000001) /* RUN */
191+#define TTS_RDY (0x00000002) /* READY */
192+#define TTS_WAI (0x00000004) /* WAIT */
193+#define TTS_SUS (0x00000008) /* SUSPEND */
194+#define TTS_WAS (0x0000000C) /* WAIT-SUSPEND */
195+#define TTS_DMT (0x00000010) /* DORMANT */
196+
197+/* tskwait */
198+#define TTW_SLP (0x00000001) /* slp_tsk, tslp_tskによる待ち */
199+#define TTW_DLY (0x00000002) /* dly_tskによる待ち */
200+#define TTW_NCD (0x00000008) /* 接続機能応答待ち */
201+#define TTW_FLG (0x00000010) /* wai_flg, twai_flgによる待ち */
202+#define TTW_SEM (0x00000020) /* wai_sem, twai_semによる待ち */
203+#define TTW_MBX (0x00000040) /* rcv_msg, trcv_msgによる待ち */
204+#define TTW_SMBF (0x00000080) /* snd_mbf, tsnd_mbfによる待ち */
205+#define TTW_MBF (0x00000100) /* rcv_mbf, trcv_mbfによる待ち */
206+#define TTW_CAL (0x00000200) /* ランデブ呼出待ち */
207+#define TTW_ACP (0x00000400) /* ランデブ受付待ち */
208+#define TTW_RDV (0x00000800) /* ランデブ終了待ち */
209+#define TTW_MPL (0x00001000) /* get_blk, tget_blkによる待ち */
210+#define TTW_MPF (0x00002000) /* get_blf, tget_blfによる待ち */
211+
212+/*--- セマフォ関係 ----------------------------------------------------------*/
213+/* cre_sem */
214+typedef struct t_csem {
215+ VP exinf; /* 拡張情報 */
216+ ATR sematr; /* セマフォ属性 */
217+
218+ /* 以下は[レベルX]の拡張機能 */
219+
220+ INT isemcnt; /* セマフォの初期値 */
221+ INT maxsem; /* セマフォの最大値 */
222+
223+ /* インプリメントによっては、以下に追加情報が入る */
224+
225+} T_CSEM;
226+
227+/* ref_sem */
228+typedef struct t_rsem {
229+ VP exinf; /* 拡張情報 */
230+ BOOL_ID wtsk; /* 待ちタスクの有無 */
231+ INT semcnt; /* 現在のセマフォカウント値 */
232+
233+ /* インプリメントによっては、以下に追加情報が入る */
234+
235+} T_RSEM;
236+
237+/*--- イベントフラグ関係 ----------------------------------------------------*/
238+/* cre_flg */
239+typedef struct t_cflg {
240+ VP exinf; /* 拡張情報 */
241+ ATR flgatr; /* イベントフラグ属性 */
242+ UINT iflgptn; /* イベントフラグの初期値 */
243+
244+ /* インプリメントによっては、以下に追加情報が入る */
245+
246+} T_CFLG;
247+
248+/* flgatr */
249+#define TA_WSGL (0x00000000) /* 複数タスクの待ちを許さない(Wait Single Task) */
250+#define TA_WMUL (0x00000008) /* 複数タスクの待ちを許す(Wait Multiple Task) */
251+
252+/* wfmode */
253+#define TWF_ANDW (0x00000000) /* AND待ち */
254+#define TWF_ORW (0x00000002) /* OR待ち */
255+#define TWF_CLR (0x00000001) /* クリア指定 */
256+
257+/* ref_flg */
258+typedef struct t_rflg {
259+ VP exinf; /* 拡張情報 */
260+ BOOL_ID wtsk; /* 待ちタスクの有無 */
261+ UINT flgptn; /* イベントフラグのビットパターン */
262+
263+ /* インプリメントによっては、以下に追加情報が入る */
264+
265+} T_RFLG;
266+
267+/*--- メイルボックス --------------------------------------------------------*/
268+/* cre_mbx */
269+typedef struct t_cmbx {
270+ VP exinf; /* 拡張情報 */
271+ ATR mbxatr; /* メイルボックス属性 */
272+
273+ /* 以下はインプリメント依存の機能 */
274+
275+ INT bufcnt; /* リングバッファの大きさ */
276+
277+ /* インプリメントによっては、以下に追加情報が入る */
278+
279+} T_CMBX;
280+
281+typedef struct t_msg {
282+ /* インプリメントによっては、最初にOSの予約領域(ヘッダ)が入る */
283+ struct t_msg * pk_next; /* OS予約領域(次のメッセージ) */
284+ struct t_msg * pk_prev; /* OS予約領域(前のメッセージ) */
285+
286+ VB msgcnt[4];
287+
288+ /* 以降、移植のための暫定処置 */
289+ ID tskid;
290+} T_MSG;
291+
292+/* ref_mbx */
293+typedef struct t_rmbx {
294+ VP exinf; /* 拡張情報 */
295+ BOOL_ID wtsk; /* 待ちタスクの有無 */
296+ T_MSG * pk_msg; /* 次に受信されるメッセージ */
297+
298+ /* インプリメントによっては、以下に追加情報が入る */
299+
300+} T_RMBX;
301+
302+/*--- メッセージバッファ関係 ------------------------------------------------*/
303+/* cre_mbf */
304+typedef struct t_cmbf {
305+ VP exinf; /* 拡張情報 */
306+ ATR mbfatr; /* メッセージバッファ属性 */
307+ INT bufsz; /* メッセージバッファのサイズ */
308+ INT maxmsz; /* メッセージの最大長 */
309+
310+ /* インプリメントによっては、以下に追加情報が入る */
311+
312+} T_CMBF;
313+
314+/* mbfid */
315+#define TMBF_OS (-4) /* OSのエラーログ用のメッセージバッファ */
316+#define TMBF_DB (-3) /* デバッグ用のメッセージバッファ */
317+
318+/* ref_mbf */
319+typedef struct t_rmbf {
320+ VP exinf; /* 拡張情報 */
321+ BOOL_ID wtsk; /* 受信待ちタスクの有無 */
322+ BOOL_ID stsk; /* 送信待ちタスクの有無 */
323+ INT msgsz; /* 次に受信されるメッセージのサイズ */
324+ INT frbufsz; /* 空きバッファのサイズ */
325+
326+ /* インプリメントによっては、以下に追加情報が入る */
327+
328+} T_RMBF;
329+
330+/*--- ポート、ランデブ関係 --------------------------------------------------*/
331+/* cre_por */
332+typedef struct t_cpor {
333+ VP exinf; /* 拡張情報 */
334+ ATR poratr; /* ポート属性 */
335+ INT maxcmsz; /* 呼出時のメッセージの最大長 */
336+ INT maxrmsz; /* 返答時のメッセージの最大長 */
337+
338+ /* インプリメントによっては、以下に追加情報が入る */
339+
340+} T_CPOR;
341+
342+/* ref_por */
343+typedef struct t_rpor {
344+ VP exinf; /* 拡張情報 */
345+ BOOL_ID wtsk; /* 呼出待ちタスクの有無 */
346+ BOOL_ID atsk; /* 受付待ちタスクの有無 */
347+
348+ /* インプリメントによっては、以下に追加情報が入る */
349+
350+} T_RPOR;
351+
352+/*--- 割込み管理関係 --------------------------------------------------------*/
353+/* def_int */
354+typedef struct t_dint {
355+ ATR intatr; /* 割込みハンドラ属性 */
356+ FP inthdr; /* 割込みハンドラアドレス */
357+
358+ /* インプリメントによっては、以下に追加情報が入る */
359+
360+} T_DINT;
361+
362+/*--- メモリプール関係 ------------------------------------------------------*/
363+/* cre_mpl */
364+typedef struct t_cmpl {
365+ VP exinf; /* 拡張情報 */
366+ ATR mplatr; /* メモリプール属性 */
367+ INT mplsz; /* メモリプール全体のサイズ */
368+
369+ /* インプリメントによっては、以下に追加情報が入る */
370+
371+} T_CMPL;
372+
373+/* mplid */
374+#define TMPL_OS (-4) /* OS用のメモリプール */
375+
376+/* ref_mpl */
377+typedef struct t_rmpl {
378+ VP exinf; /* 拡張情報 */
379+ BOOL_ID wtsk; /* 待ちタスクの有無 */
380+ INT frsz; /* 空き領域の合計サイズ */
381+ INT maxsz; /* 最大の連続空き領域のサイズ */
382+
383+ /* インプリメントによっては、以下に追加情報が入る */
384+
385+} T_RMPL;
386+
387+/* cre_mpf */
388+typedef struct t_cmpf {
389+ VP exinf; /* 拡張情報 */
390+ ATR mpfatr; /* メモリプール属性 */
391+ INT mpfcnt; /* メモリプール全体のブロック数 */
392+ INT blfsz; /* 固定長メモリブロックサイズ */
393+
394+ /* インプリメントによっては、以下に追加情報が入る */
395+
396+} T_CMPF;
397+
398+/* ref_mpf */
399+typedef struct t_rmpf {
400+ VP exinf; /* 拡張情報 */
401+ BOOL_ID wtsk; /* 待ちタスクの有無 */
402+ INT frbcnt; /* 空き領域のブロック数 */
403+
404+ /* インプリメントによっては、以下に追加情報が入る */
405+
406+} T_RMPF;
407+
408+/*--- 時間管理関係 ----------------------------------------------------------*/
409+//#if (4 == sizeof(int))
410+
411+/* 32ビットCPUの場合の例 */
412+typedef struct t_systime {
413+ H utime; /* 上位16ビット */
414+ UW ltime; /* 下位32ビット */
415+} SYSTIME, CYCTIME, ALMTIME;
416+
417+//#elif (2 == sizeof(int))
418+//
419+/* 16ビットCPUの場合の例 */
420+//typedef struct t_systime {
421+// H utime; /* 上位16ビット */
422+// UH mtime; /* 中位16ビット */
423+// UH ltime; /* 下位16ビット */
424+//} SYSTIME, CYCTIME, ALMTIME;
425+
426+//#else
427+//#endif /* */
428+
429+typedef UW DLYTIME;
430+
431+/* def_cyc */
432+typedef struct t_dcyc {
433+ VP exinf; /* 拡張情報 */
434+ ATR cycatr; /* 周期起動ハンドラ属性 */
435+ FP cychdr; /* 周期起動ハンドラアドレス */
436+ UINT cycact; /* 周期起動ハンドラ活性状態 */
437+ CYCTIME cyctim; /* 周期起動時間間隔 */
438+} T_DCYC;
439+
440+/* cyhact */
441+#define TCY_OFF (0x00000000) /* 周期起動ハンドラが起動されない */
442+#define TCY_ON (0x00000001) /* 周期起動ハンドラが起動される */
443+#define TCY_INI (0x00000002) /* 周期起動ハンドラが初期化される */
444+
445+/* ref_cyc */
446+typedef struct t_rcyc {
447+ VP exinf; /* 拡張情報 */
448+ CYCTIME lfttim; /* 次のハンドラ起動までの残り時間 */
449+ UINT cycact; /* 周期起動ハンドラ活性状態 */
450+
451+ /* インプリメントによっては、以下に追加情報が入る */
452+
453+} T_RCYC;
454+
455+/* def_alm */
456+typedef struct t_dalm {
457+ VP exinf; /* 拡張情報 */
458+ ATR almatr; /* アラームハンドラ属性 */
459+ FP almhdr; /* アラームハンドラアドレス */
460+ UINT tmmode; /* 起動時刻指定モード */
461+ ALMTIME almtim; /* ハンドラ起動時間 */
462+} T_DALM;
463+
464+/* tmmode */
465+#define TTM_ABS (0x00000000) /* 絶対時刻での指定 */
466+#define TTM_REL (0x00000001) /* 相対時刻での指定 */
467+
468+/* ref_alm */
469+typedef struct t_ralm {
470+ VP exinf; /* 拡張情報 */
471+ ALMTIME lfttim; /* ハンドラ起動までの残り時間 */
472+
473+ /* インプリメントによっては、以下に追加情報が入る */
474+
475+} T_RALM;
476+
477+/*--- システム管理関係 ------------------------------------------------------*/
478+/* get_ver */
479+typedef struct t_ver {
480+ UH maker; /* メーカー */
481+ UH id; /* 形式番号 */
482+ UH spver; /* 仕様書バージョン */
483+ UH prver; /* 製品バージョン */
484+ UH prno[4]; /* 製品管理情報 */
485+ UH cpu; /* CPU情報 */
486+ UH var; /* バリエーション記述子 */
487+} T_VER;
488+
489+/* ref_sys */
490+typedef struct t_rsys {
491+ INT sysstat; /* システム状態 */
492+
493+ /* インプリメントによっては、以下に追加情報が入る */
494+
495+} T_RSYS;
496+
497+/* sysstat */
498+#define TSS_TSK (0) /* タスク部実行中でディスパッチを許可した通常の状態 */
499+#define TSS_DDSP (1) /* タスク部実行中でdis_dspを実行した後の状態(ディスパッチ禁止中) */
500+#define TSS_LOC (3) /* タスク部実行中でloc_cpuを実行した後の状態(割込みおよびディスパッチ禁止中) */
501+#define TSS_INDP (4) /* タスク独立部(割込みハンドラ、タイマハンドラ)実行中 */
502+
503+/* ref_cfg */
504+typedef struct t_rcfg {
505+
506+ /* メンバの詳細はインプリメント依存である */
507+
508+ INT dummy;
509+
510+} T_RCFG;
511+
512+/* def_svc */
513+typedef struct t_dsvc {
514+ ATR svcatr; /* 拡張SVCハンドラ属性 */
515+ FP svchdr; /* 拡張SVCハンドラアドレス */
516+
517+ /* インプリメントによっては、以下に追加情報が入る */
518+
519+} T_DSVC;
520+
521+/* def_exc */
522+typedef struct t_dexc {
523+ ATR excatr; /* 例外ハンドラ属性 */
524+ FP exchdr; /* 例外ハンドラアドレス */
525+
526+ /* インプリメントによっては、以下に追加情報が入る */
527+
528+} T_DEXC;
529+
530+/*--- ネットワークサポート関係 -----------------------------------------------*/
531+/* NODE srcnode, dstnode, node */
532+#define TND_SELF (0) /* 自ノードの指定 */
533+#define TND_OTHR (-1) /* デフォルトの他ノードの指定 */
534+
535+
536+/*
537+==============================================================================
538+ システムコール定義
539+==============================================================================
540+*/
541+/*--- 機能コード ------------------------------------------------------------*/
542+#define TFN_CRE_TSK (-17) /* cre_tsk */
543+#define TFN_DEL_TSK (-18) /* del_tsk */
544+#define TFN_STA_TSK (-23) /* sta_tsk */
545+#define TFN_EXT_TSK (-21) /* ext_tsk */
546+#define TFN_EXD_TSK (-22) /* exd_tsk */
547+#define TFN_TER_TSK (-25) /* ter_tsk */
548+#define TFN_DIS_DSP (-30) /* dis_dsp */
549+#define TFN_ENA_DSP (-29) /* ena_dsp */
550+#define TFN_CHG_PRI (-27) /* chg_pri */
551+#define TFN_ICHG_PRI (-117) /* ichg_pri */
552+#define TFN_ROT_RDQ (-28) /* rot_rdq */
553+#define TFN_IROT_RDQ (-118) /* irot_rdq */
554+#define TFN_REL_WAI (-31) /* rel_wai */
555+#define TFN_IREL_WAI (-127) /* irel_wai */
556+#define TFN_GET_TID (-24) /* get_tid */
557+#define TFN_REF_TSK (-20) /* ref_tsk */
558+
559+#define TFN_SUS_TSK (-33) /* sus_tsk */
560+#define TFN_ISUS_TSK (-113) /* isus_tsk */
561+#define TFN_RSM_TSK (-35) /* rsm_tsk */
562+#define TFN_IRSM_TSK (-115) /* irsm_tsk */
563+#define TFN_FRSM_TSK (-36) /* frsm_tsk */
564+#define TFN_IFRSM_TSK (-116) /* ifrsm_tsk */
565+#define TFN_SLP_TSK (-38) /* slp_tsk */
566+#define TFN_TSLP_TSK (-37) /* tslp_tsk */
567+#define TFN_WUP_TSK (-39) /* wup_tsk */
568+#define TFN_IWUP_TSK (-121) /* iwup_tsk */
569+#define TFN_CAN_WUP (-40) /* can_wup */
570+
571+#define TFN_CRE_SEM (-49) /* cre_sem */
572+#define TFN_DEL_SEM (-50) /* del_sem */
573+#define TFN_SIG_SEM (-55) /* sig_sem */
574+#define TFN_ISIG_SEM (-123) /* isig_sem */
575+#define TFN_WAI_SEM (-53) /* wai_sem */
576+#define TFN_PREQ_SEM (-107) /* preq_sem */
577+#define TFN_TWAI_SEM (-171) /* twai_sem */
578+#define TFN_REF_SEM (-52) /* ref_sem */
579+#define TFN_CRE_MBX (-57) /* cre_mbx */
580+#define TFN_DEL_MBX (-58) /* del_mbx */
581+#define TFN_SND_MSG (-63) /* snd_msg */
582+#define TFN_ISND_MSG (-124) /* isnd_msg */
583+#define TFN_RCV_MSG (-61) /* rcv_msg */
584+#define TFN_PRCV_MSG (-108) /* prcv_msg */
585+#define TFN_TRCV_MSG (-172) /* trcv_msg */
586+#define TFN_REF_MBX (-60) /* ref_mbx */
587+
588+#define TFN_CRE_FLG (-41) /* cre_flg */
589+#define TFN_DEL_FLG (-42) /* del_flg */
590+#define TFN_SET_FLG (-48) /* set_flg */
591+#define TFN_ISET_FLG (-122) /* iset_flg */
592+#define TFN_CLR_FLG (-47) /* clr_flg */
593+#define TFN_WAI_FLG (-46) /* wai_flg */
594+#define TFN_TWAI_FLG (-170) /* twai_flg */
595+#define TFN_POL_FLG (-106) /* pol_flg */
596+#define TFN_REF_FLG (-44) /* ref_flg */
597+
598+#define TFN_CRE_MBF (-153) /* cre_mbf */
599+#define TFN_DEL_MBF (-154) /* del_mbf */
600+#define TFN_SND_MBF (-157) /* snd_mbf */
601+#define TFN_PSND_MBF (-109) /* psnd_mbf */
602+#define TFN_IPSND_MBF (-125) /* ipsnd_mbf */
603+#define TFN_TSND_MBF (-173) /* tsnd_mbf */
604+#define TFN_RCV_MBF (-158) /* rcv_mbf */
605+#define TFN_PRCV_MBF (-110) /* prcv_mbf */
606+#define TFN_TRCV_MBF (-174) /* trcv_mbf */
607+#define TFN_REF_MBF (-156) /* ref_mbf */
608+
609+#define TFN_CRE_POR (-145) /* cre_por */
610+#define TFN_DEL_POR (-146) /* del_por */
611+#define TFN_CAL_POR (-149) /* cal_por */
612+#define TFN_PCAL_POR (-111) /* pcal_por */
613+#define TFN_TCAL_POR (-175) /* tcal_por */
614+#define TFN_ACP_POR (-150) /* acp_por */
615+#define TFN_PACP_POR (-112) /* pacp_por */
616+#define TFN_TACP_POR (-176) /* tacp_por */
617+#define TFN_FWD_POR (-152) /* fwd_por */
618+#define TFN_RPL_RDV (-151) /* rpl_por */
619+#define TFN_REF_POR (-148) /* ref_por */
620+
621+#define TFN_DEF_INT (-65) /* def_int */
622+#define TFN_RET_INT (-69) /* ret_int */
623+#define TFN_RET_WUP (-70) /* ret_wup */
624+#define TFN_LOC_CPU (-8) /* loc_cpu */
625+#define TFN_UNL_CPU (-7) /* unl_cpu */
626+#define TFN_DIS_INT (-72) /* dis_int */
627+#define TFN_ENA_INT (-71) /* ena_int */
628+#define TFN_CHG_IXX (-67) /* chg_iXX */
629+#define TFN_REF_IXX (-68) /* ref_iXX */
630+
631+#define TFN_CRE_MPL (-137) /* cre_mpl */
632+#define TFN_DEL_MPL (-138) /* del_mpl */
633+#define TFN_GET_BLK (-141) /* get_blk */
634+#define TFN_PGET_BLK (-104) /* pget_blk */
635+#define TFN_IPGET_BLK (-120) /* ipget_blk */
636+#define TFN_TGET_BLK (-168) /* tget_blk */
637+#define TFN_REL_BLK (-143) /* rel_blk */
638+#define TFN_REF_MPL (-140) /* ref_mpl */
639+#define TFN_CRE_MPF (-73) /* cre_mpf */
640+#define TFN_DEL_MPF (-74) /* del_mpf */
641+#define TFN_GET_BLF (-77) /* get_blf */
642+#define TFN_PGET_BLF (-103) /* pget_blf */
643+#define TFN_IPGET_BLF (-119) /* ipget_blf */
644+#define TFN_TGET_BLF (-167) /* tget_blf */
645+#define TFN_REL_BLF (-79) /* rel_blf */
646+#define TFN_REF_MPF (-76) /* ref_mpf */
647+
648+#define TFN_SET_TIM (-83) /* set_tim */
649+#define TFN_GET_TIM (-84) /* get_tim */
650+#define TFN_DLY_TSK (-85) /* dly_tsk */
651+#define TFN_DEF_CYC (-90) /* def_cyc */
652+#define TFN_ACT_CYC (-94) /* act_cyc */
653+#define TFN_REF_CYC (-92) /* ref_cyc */
654+#define TFN_DEF_ALM (-89) /* def_alm */
655+#define TFN_REF_ALM (-91) /* ref_alm */
656+#define TFN_RET_TMR (-93) /* ret_tmr */
657+
658+#define TFN_GET_VER (-16) /* get_ver */
659+#define TFN_REF_SYS (-12) /* ref_sys */
660+#define TFN_REF_CFG (-14) /* ref_cfg */
661+#define TFN_DEF_SVC (-9) /* def_svc */
662+#define TFN_DEF_EXC (-11) /* def_exc */
663+
664+#define TFN_NREA_DAT (-99) /* nrea_dat */
665+#define TFN_NWRI_DAT (-100) /* nwri_dat */
666+#define TFN_NGET_NOD (-97) /* nget_nod */
667+#define TFN_NGET_VER (-98) /* nget_ver */
668+
669+/*
670+------------------------------------------------------------------------------
671+ タスク管理機能
672+------------------------------------------------------------------------------
673+*/
674+ER cre_tsk(ID tskid, T_CTSK *pk_ctsk);
675+ER del_tsk(ID tskid);
676+ER sta_tsk(ID tskid, INT stacd);
677+void ext_tsk(void);
678+void exd_tsk(void);
679+ER ter_tsk(ID tskid);
680+ER dis_dsp(void);
681+ER ena_dsp(void);
682+ER chg_pri(ID tskid, PRI tskpri);
683+ER ichg_pri(ID tskid, PRI tskpri);
684+ER rot_rdq(PRI tskpri);
685+ER irot_rdq(PRI tskpri);
686+ER rel_wai(ID tskid);
687+ER irel_wai(ID tskid);
688+ER get_tid(ID *p_tskid);
689+ER ref_tsk(T_RTSK *pk_rtsk, ID tskid);
690+
691+/*
692+------------------------------------------------------------------------------
693+ タスク付属同期機能
694+------------------------------------------------------------------------------
695+*/
696+ER sus_tsk(ID tskid);
697+ER isus_tsk(ID tskid);
698+ER rsm_tsk(ID tskid);
699+ER irsm_tsk(ID tskid);
700+ER frsm_tsk(ID tskid);
701+ER ifrsm_tsk(ID tskid);
702+ER slp_tsk(void);
703+ER tslp_tsk(TMO tmout);
704+ER wup_tsk(ID tskid);
705+ER iwup_tsk(ID tskid);
706+ER can_wup(INT *p_wupcnt, ID tskid);
707+
708+/*
709+------------------------------------------------------------------------------
710+ 同期・通信機能
711+------------------------------------------------------------------------------
712+*/
713+ER cre_sem(ID semid, T_CSEM *pk_csem);
714+ER del_sem(ID semid);
715+ER sig_sem(ID semid);
716+ER isig_sem(ID semid);
717+ER wai_sem(ID semid);
718+ER preq_sem(ID semid);
719+ER twai_sem(ID semid, TMO tmout);
720+ER ref_sem(T_RSEM *pk_rsem, ID semid);
721+
722+ER cre_flg(ID flgid, T_CFLG *pk_cflg);
723+ER del_flg(ID flgid);
724+ER set_flg(ID flgid, UINT setptn);
725+ER iset_flg(ID flgid, UINT setptn);
726+ER clr_flg(ID flgid, UINT clrptn);
727+ER wai_flg(UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode);
728+ER pol_flg(UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode);
729+ER twai_flg(UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode, TMO tmout);
730+ER ref_flg(T_RFLG *pk_rflg, ID flgid);
731+
732+ER cre_mbx(ID mbxid, T_CMBX* pk_cmbx);
733+ER del_mbx(ID mbxid);
734+ER snd_msg(ID mbxid, T_MSG *pk_msg);
735+ER isnd_msg(ID mbxid, T_MSG *pk_msg);
736+ER rcv_msg(T_MSG **ppk_msg, ID mbxid);
737+ER prcv_msg(T_MSG **ppk_msg, ID mbxid);
738+ER trcv_msg(T_MSG **ppk_msg, ID mbxid, TMO tmout);
739+ER ref_mbx(T_RMBX *pk_rmbx, ID mbxid);
740+
741+/*
742+------------------------------------------------------------------------------
743+ 拡張同期・通信機能
744+------------------------------------------------------------------------------
745+*/
746+ER cre_mbf(ID mbfid, T_CMBF* pk_cmbf);
747+ER del_mbf(ID mbfid);
748+ER snd_mbf(ID mbfid, VP msg, INT msgsz);
749+ER psnd_mbf(ID mbfid, VP msg, INT msgsz);
750+ER ipsnd_mbf(ID mbfid, VP msg, INT msgsz);
751+ER tsnd_mbf(ID mbfid, VP msg, INT msgsz, TMO tmout);
752+ER rcv_mbf(VP msg, INT *p_msgsz, ID mbfid);
753+ER prcv_mbf(VP msg, INT *p_msgsz, ID mbfid);
754+ER trcv_mbf(VP msg, INT *p_msgsz, ID mbfid, TMO tmout);
755+ER ref_mbf(T_RMBF *pk_rmbf, ID mbfid);
756+
757+ER cre_por(ID porid, T_CPOR *pk_cpor);
758+ER del_por(ID porid);
759+ER cal_por(VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz);
760+ER pcal_por(VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz);
761+ER tcal_por(VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz, TMO tmout);
762+ER acp_por(RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn);
763+ER pacp_por(RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn);
764+ER tacp_por(RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn, TMO tmout);
765+ER fwd_por(ID porid, UINT calptn, RNO rdvno, VP msg, INT cmsgsz);
766+ER rpl_rdv(RNO rdvno, VP msg, INT rmsgsz);
767+ER ref_por(T_RPOR *pk_rpor, ID porid);
768+
769+/*
770+------------------------------------------------------------------------------
771+ 割込み管理機能
772+------------------------------------------------------------------------------
773+*/
774+ER def_int(UINT dintno, T_DINT *pk_dint);
775+void ret_int(void);
776+void ret_wup(ID tskid);
777+ER loc_cpu(void);
778+ER unl_cpu(void);
779+ER dis_int(UINT eintno);
780+ER ena_int(UINT eintno);
781+ER chg_iXX(UINT iXX);
782+ER ref_iXX(UINT *p_iXXXX);
783+
784+/*
785+------------------------------------------------------------------------------
786+ メモリプール管理機能
787+------------------------------------------------------------------------------
788+*/
789+ER cre_mpl(ID mplid, T_CMPL *pk_cmpl);
790+ER del_mpl(ID mplid);
791+ER get_blk(VP *p_blk, ID mplid, INT blksz);
792+ER pget_blk(VP *p_blk, ID mplid, INT blksz);
793+ER ipget_blk(VP *p_blk, ID mplid, INT blksz);
794+ER tget_blk(VP *p_blk, ID mplid, INT blksz, TMO tmout);
795+ER rel_blk(ID mplid, VP blk);
796+ER ref_mpl(T_RMPL *pk_rmpl, ID mplid);
797+
798+ER cre_mpf(ID mpfid, T_CMPF *pk_cmpf);
799+ER del_mpf(ID mpfid);
800+ER get_blf(VP *p_blf, ID mplid);
801+ER pget_blf(VP *p_blf, ID mplid);
802+ER ipget_blf(VP *p_blf, ID mplid);
803+ER tget_blf(VP *p_blf, ID mplid, TMO tmout);
804+ER rel_blf(ID mplid, VP blf);
805+ER ref_mpf(T_RMPF *pk_rmpf, ID mpfid);
806+
807+/*
808+------------------------------------------------------------------------------
809+ 時間管理機能
810+------------------------------------------------------------------------------
811+*/
812+ER set_tim(SYSTIME *pk_tim);
813+ER get_tim(SYSTIME *pk_tim);
814+ER dly_tsk(DLYTIME dlytim);
815+
816+ER def_cyc(HNO cycno, T_DCYC *pk_dcyc);
817+ER act_cyc(HNO cycno, UINT cycact);
818+ER ref_cyc(T_RCYC *pk_rcyc, HNO cycno);
819+ER def_alm(HNO almno, T_DALM *pk_dalm);
820+ER ref_alm(T_RALM *pk_ralm, HNO almno);
821+void ret_tmr(void);
822+
823+/*
824+------------------------------------------------------------------------------
825+ システム管理機能
826+------------------------------------------------------------------------------
827+*/
828+ER get_ver(T_VER *pk_ver);
829+ER ref_sys(T_RSYS *pk_rsys);
830+ER ref_cfg(T_RCFG *pk_rcfg);
831+
832+ER def_svc(FN s_fncd, T_DSVC *pk_dsvc);
833+ER def_exc(UINT exckind, T_DEXC *pk_dexc);
834+
835+/*
836+------------------------------------------------------------------------------
837+ ネットワークサポート機能
838+------------------------------------------------------------------------------
839+*/
840+ER nrea_dat(INT *p_reasz, VP dstadr, NODE srcnode, VP srcadr, INT datsz);
841+ER nwri_dat(INT *p_wrisz, NODE dstnode, VP dstadr, VP srcadr, INT datsz);
842+
843+ER nget_nod(NODE *p_node);
844+ER nget_ver(T_VER *pk_ver, NODE node);
845+
846+#ifdef __cplusplus
847+}
848+#endif /* __cplusplus */
849+
850+#endif /* _ITRON_H_ */