toppers edu jsp
https://qiita.com/kaizen_nagoya/items/5561df93c7e156573fd2
toppersedujsp
https://github.com/kaizen-nagoya/toppersedujsp/
include
include
https://github.com/kaizen-nagoya/toppersedujsp/tree/main/include
itron.h
itron.h
/*
* TOPPERS/JSP Kernel
* Toyohashi Open Platform for Embedded Real-Time Systems/
* Just Standard Profile Kernel
*
* Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
* Toyohashi Univ. of Technology, JAPAN
*
* 上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
* によって公表されている GNU General Public License の Version 2 に記
* 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
* を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
* 利用と呼ぶ)することを無償で許諾する.
* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
* スコード中に含まれていること.
* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
* 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
* 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
* の無保証規定を掲載すること.
* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
* 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
* と.
* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
* 作権表示,この利用条件および下記の無保証規定を掲載すること.
* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
* 報告すること.
* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
* 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
*
* 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
* よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
* 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
* 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
*
* @(#) $Id: itron.h,v 1.14 2003/06/18 12:46:54 hiro Exp $
*/
/*
* ITRON仕様共通規定のデータ型・定数・マクロ
*
* このファイルには,スタンダードプロファイルには必要ない定義も含んで
* いる.データ型の定義は,スタンダードプロファイルを満たすちょうどの
* 長さにはしていない.
*
* アセンブリ言語のソースファイルやシステムコンフィギュレーションファ
* イルからこのファイルをインクルードする時は,_MACRO_ONLY を定義して
* おくことで,マクロ定義以外の記述を除くことができる.
*
* このインクルードファイルは,kernel.h と sil.h でインクルードされる.
* また,ITRON仕様共通規定に準拠するソフトウェア部品のインクルードファ
* イルは,このファイルを直接インクルードしてもよい.この例外を除いて,
* 他のファイルから直接インクルードされることはない.
*
* このファイルをインクルードする前に,t_stddef.h をインクルードして
* おくことが必要である.
*/
#ifndef _ITRON_H_
#define _ITRON_H_
#ifdef __cplusplus
extern "C" {
#endif
/*
* 開発環境に依存する定義
*/
#include <tool_defs.h>
/*
* 開発環境の標準インクルードファイル(NULL と size_t の定義が必要)
*
* C++/EC++ では,標準仕様上は stddef.h がサポートされているとは限らな
* いが,ほとんどの処理系でサポートされている.
*/
#ifndef _MACRO_ONLY
#include <stddef.h>
#endif /* _MACRO_ONLY */
/*
* コンパイラ依存のデータ型のデフォルト定義
*/
#ifndef _bool_
#define _bool_ int /* ブール型 */
#endif /* _bool_ */
/*
* ITRON仕様共通データ型
*/
#ifndef _MACRO_ONLY
#ifdef _int8_
typedef signed _int8_ B; /* 符号付き8ビット整数 */
typedef unsigned _int8_ UB; /* 符号無し8ビット整数 */
typedef _int8_ VB; /* 型が定まらない8ビットの値 */
#endif /* _int8_ */
#ifdef _int16_
typedef signed _int16_ H; /* 符号付き16ビット整数 */
typedef unsigned _int16_ UH; /* 符号無し16ビット整数 */
typedef _int16_ VH; /* 型が定まらない16ビットの値 */
#endif /* _int16_ */
typedef signed _int32_ W; /* 符号付き32ビット整数 */
typedef unsigned _int32_ UW; /* 符号無し32ビット整数 */
typedef _int32_ VW; /* 型が定まらない32ビットの値 */
#ifdef _int64_
typedef signed _int64_ D; /* 符号付き64ビット整数 */
typedef unsigned _int64_ UD; /* 符号無し64ビット整数 */
typedef _int64_ VD; /* 型が定まらない64ビットの値 */
#endif /* _int64_ */
typedef void *VP; /* 型が定まらないものへのポインタ */
typedef void (*FP)(); /* プログラムの起動番地(ポインタ) */
typedef signed int INT; /* 自然なサイズの符号付き整数 */
typedef unsigned int UINT; /* 自然なサイズの符号無し整数 */
typedef _bool_ BOOL; /* 真偽値 */
typedef INT FN; /* 機能コード */
typedef INT ER; /* エラーコード */
typedef INT ID; /* オブジェクトのID番号 */
typedef UINT ATR; /* オブジェクトの属性 */
typedef UINT STAT; /* オブジェクトの状態 */
typedef UINT MODE; /* サービスコールの動作モード */
typedef INT PRI; /* 優先度 */
typedef size_t SIZE; /* メモリ領域のサイズ */
typedef INT TMO; /* タイムアウト指定 */
typedef UINT RELTIM; /* 相対時間 */
typedef UW SYSTIM; /* システム時刻 */
typedef VP VP_INT; /* VP または INT */
typedef INT ER_BOOL; /* ER または BOOL */
typedef INT ER_ID; /* ER または ID */
typedef INT ER_UINT; /* ER または UINT */
#endif /* _MACRO_ONLY */
/*
* ITRON仕様共通定数
*/
/*
* 一般
*
* _MACRO_ONLY の時には,NULL を定義しない.これは,_MACRO_ONLY の時
* はstddef.h をインクルードしないため,そうでない時と NULL の定義が
* 食い違う可能性があるためである.また,システムコンフィギュレーショ
* ンファイルを処理する場合には NULL を定義してはならないため,その点
* からも定義しない方が都合がよい.
*/
#ifndef _MACRO_ONLY
#ifndef NULL /* stddef.h に含まれているはず */
#define NULL 0 /* 無効ポインタ */
#endif /* NULL */
#endif /* _MACRO_ONLY */
#define TRUE 1 /* 真 */
#define FALSE 0 /* 偽 */
#define E_OK 0 /* 正常終了 */
/*
* エラーコード
*/
#define E_SYS (-5) /* システムエラー */
#define E_NOSPT (-9) /* 未サポート機能 */
#define E_RSFN (-10) /* 予約機能コード */
#define E_RSATR (-11) /* 予約属性 */
#define E_PAR (-17) /* パラメータエラー */
#define E_ID (-18) /* 不正ID番号 */
#define E_CTX (-25) /* コンテキストエラー */
#define E_MACV (-26) /* メモリアクセス違反 */
#define E_OACV (-27) /* オブジェクトアクセス違反 */
#define E_ILUSE (-28) /* サービスコール不正使用 */
#define E_NOMEM (-33) /* メモリ不足 */
#define E_NOID (-34) /* ID番号不足 */
#define E_OBJ (-41) /* オブジェクト状態エラー */
#define E_NOEXS (-42) /* オブジェクト未生成 */
#define E_QOVR (-43) /* キューイングオーバーフロー */
#define E_RLWAI (-49) /* 待ち状態の強制解除 */
#define E_TMOUT (-50) /* ポーリング失敗またはタイムアウト */
#define E_DLT (-51) /* 待ちオブジェクトの削除 */
#define E_CLS (-52) /* 待ちオブジェクトの状態変化 */
#define E_WBLK (-57) /* ノンブロッキング受付け */
#define E_BOVR (-58) /* バッファオーバーフロー */
/*
* オブジェクト属性
*/
#define TA_NULL 0u /* オブジェクト属性を指定しない */
/*
* タイムアウト指定
*/
#define TMO_POL 0 /* ポーリング */
#define TMO_FEVR (-1) /* 永久待ち */
#define TMO_NBLK (-2) /* ノンブロッキング */
/*
* ITRON仕様共通マクロ
*/
/*
* エラーコード生成・分解マクロ
*
* ANSI C言語の規格では,右シフト演算子(>>)が符号拡張されることを保
* 証していないため,SERCDマクロの定義を単に ((ercd) >> 8) とすると,
* 右シフト演算子を符号拡張しないコンパイラでは,SERCD の返値が正の値
* になってしまう.
*/
#define ERCD(mercd,sercd) (((sercd) << 8) | ((mercd) & 0xff))
#ifdef _int8_
#define MERCD(ercd) ((ER)((B)(ercd)))
#define SERCD(ercd) ((ER)((B)((ercd) >> 8)))
#else /* _int8_ */
#define MERCD(ercd) (((ercd) & 0x80) == 0 ? ((ercd) & 0xff) \
: ((ercd) | ~0xff))
#define SERCD(ercd) ((~(-1 >> 8)) | ((ercd) >> 8))
#endif /* _int8_ */
#ifdef __cplusplus
}
#endif
#endif /* _ITRON_H_ */
kernel.h
kernel.h
/*
* TOPPERS/JSP Kernel
* Toyohashi Open Platform for Embedded Real-Time Systems/
* Just Standard Profile Kernel
*
* Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
* Toyohashi Univ. of Technology, JAPAN
*
* 上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation
* によって公表されている GNU General Public License の Version 2 に記
* 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
* を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
* 利用と呼ぶ)することを無償で許諾する.
* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
* スコード中に含まれていること.
* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
* 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
* 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
* の無保証規定を掲載すること.
* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
* 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
* と.
* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
* 作権表示,この利用条件および下記の無保証規定を掲載すること.
* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
* 報告すること.
* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
* 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
*
* 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
* よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
* 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
* 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
*
* @(#) $Id: kernel.h,v 1.18 2003/12/06 13:01:37 hiro Exp $
*/
/*
* μITRON4.0仕様標準インクルードファイル
*
* このファイルでは,スタンダードプロファイルで必要なものと,JSPカー
* ネル独自の拡張機能で必要なものだけを定義している.データ型の定義は,
* スタンダードプロファイルを満たすちょうどの長さにはしていない.
*
* アセンブリ言語のソースファイルやシステムコンフィギュレーションファ
* イルからこのファイルをインクルードする時は,_MACRO_ONLY を定義して
* おくことで,マクロ定義以外の記述を除くことができる.
*
* このインクルードファイルは,標準インクルードファイル(t_services.h
* と jsp_kernel.h)でインクルードされる.また,他の ITRON仕様OS から
* ソフトウェアをポーティングする場合などには,このファイルを直接イン
* クルードしてもよい.この例外を除いて,他のファイルから直接インクルー
* ドされることはない.
*
* この中でインクルードしているファイルを除いて,他のインクルードファ
* イルに依存していない.*/
#ifndef _KERNEL_H_
#define _KERNEL_H_
#ifdef __cplusplus
extern "C" {
#endif
/*
* カーネル・アプリケーション 共通インクルードファイル
*/
#include <t_stddef.h>
/*
* ITRON仕様共通規定のデータ型・定数・マクロ
*/
#include <itron.h>
/*
* システムやプロセッサに依存する定義
*/
#include <sys_defs.h>
#include <cpu_defs.h>
/*
* システムログサービスのための定義
*/
#include <t_syslog.h>
/*
* 補助マクロ
*/
#define TROUND_VP(sz) (((sz) + sizeof(VP) - 1) & ~(sizeof(VP) - 1))
#define TCOUNT_VP(sz) (((sz) + sizeof(VP) - 1) / sizeof(VP))
/*
* データ型の定義
*/
#ifndef _MACRO_ONLY
typedef UINT TEXPTN; /* タスク例外要因のビットパターン */
typedef UINT FLGPTN; /* イベントフラグのビットパターン */
typedef struct t_msg { /* メールボックスのメッセージヘッダ */
struct t_msg *next;
} T_MSG;
typedef struct t_msg_pri { /* 優先度付きメッセージヘッダ */
T_MSG msgque; /* メッセージヘッダ */
PRI msgpri; /* メッセージ優先度 */
} T_MSG_PRI;
#endif /* _MACRO_ONLY */
/*
* サービスコールの宣言
*/
#ifndef _MACRO_ONLY
/*
* タスク管理機能
*/
extern ER act_tsk(ID tskid) throw();
extern ER iact_tsk(ID tskid) throw();
extern ER_UINT can_act(ID tskid) throw();
extern void ext_tsk(void) throw();
extern ER ter_tsk(ID tskid) throw();
extern ER chg_pri(ID tskid, PRI tskpri) throw();
extern ER get_pri(ID tskid, PRI *p_tskpri) throw();
/*
* タスク付属同期機能
*/
extern ER slp_tsk(void) throw();
extern ER tslp_tsk(TMO tmout) throw();
extern ER wup_tsk(ID tskid) throw();
extern ER iwup_tsk(ID tskid) throw();
extern ER_UINT can_wup(ID tskid) throw();
extern ER rel_wai(ID tskid) throw();
extern ER irel_wai(ID tskid) throw();
extern ER sus_tsk(ID tskid) throw();
extern ER rsm_tsk(ID tskid) throw();
extern ER frsm_tsk(ID tskid) throw();
extern ER dly_tsk(RELTIM dlytim) throw();
/*
* タスク例外処理機能
*/
extern ER ras_tex(ID tskid, TEXPTN rasptn) throw();
extern ER iras_tex(ID tskid, TEXPTN rasptn) throw();
extern ER dis_tex(void) throw();
extern ER ena_tex(void) throw();
extern BOOL sns_tex(void) throw();
/*
* 同期・通信機能
*/
extern ER sig_sem(ID semid) throw();
extern ER isig_sem(ID semid) throw();
extern ER wai_sem(ID semid) throw();
extern ER pol_sem(ID semid) throw();
extern ER twai_sem(ID semid, TMO tmout) throw();
extern ER set_flg(ID flgid, FLGPTN setptn) throw();
extern ER iset_flg(ID flgid, FLGPTN setptn) throw();
extern ER clr_flg(ID flgid, FLGPTN clrptn) throw();
extern ER wai_flg(ID flgid, FLGPTN waiptn,
MODE wfmode, FLGPTN *p_flgptn) throw();
extern ER pol_flg(ID flgid, FLGPTN waiptn,
MODE wfmode, FLGPTN *p_flgptn) throw();
extern ER twai_flg(ID flgid, FLGPTN waiptn,
MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
extern ER snd_dtq(ID dtqid, VP_INT data) throw();
extern ER psnd_dtq(ID dtqid, VP_INT data) throw();
extern ER ipsnd_dtq(ID dtqid, VP_INT data) throw();
extern ER tsnd_dtq(ID dtqid, VP_INT data, TMO tmout) throw();
extern ER fsnd_dtq(ID dtqid, VP_INT data) throw();
extern ER ifsnd_dtq(ID dtqid, VP_INT data) throw();
extern ER rcv_dtq(ID dtqid, VP_INT *p_data) throw();
extern ER prcv_dtq(ID dtqid, VP_INT *p_data) throw();
extern ER trcv_dtq(ID dtqid, VP_INT *p_data, TMO tmout) throw();
extern ER snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
extern ER rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
extern ER prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
extern ER trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
/*
* メモリプール管理機能
*/
extern ER get_mpf(ID mpfid, VP *p_blk) throw();
extern ER pget_mpf(ID mpfid, VP *p_blk) throw();
extern ER tget_mpf(ID mpfid, VP *p_blk, TMO tmout) throw();
extern ER rel_mpf(ID mpfid, VP blk) throw();
/*
* 時間管理機能
*/
extern ER set_tim(const SYSTIM *p_systim) throw();
extern ER get_tim(SYSTIM *p_systim) throw();
extern ER isig_tim(void) throw();
extern ER sta_cyc(ID cycid) throw();
extern ER stp_cyc(ID cycid) throw();
/*
* システム状態管理機能
*/
extern ER rot_rdq(PRI tskpri) throw();
extern ER irot_rdq(PRI tskpri) throw();
extern ER get_tid(ID *p_tskid) throw();
extern ER iget_tid(ID *p_tskid) throw();
extern ER loc_cpu(void) throw();
extern ER iloc_cpu(void) throw();
extern ER unl_cpu(void) throw();
extern ER iunl_cpu(void) throw();
extern ER dis_dsp(void) throw();
extern ER ena_dsp(void) throw();
extern BOOL sns_ctx(void) throw();
extern BOOL sns_loc(void) throw();
extern BOOL sns_dsp(void) throw();
extern BOOL sns_dpn(void) throw();
/*
* 実装独自サービスコール
*/
extern BOOL vxsns_ctx(VP p_excinf) throw();
extern BOOL vxsns_loc(VP p_excinf) throw();
extern BOOL vxsns_dsp(VP p_excinf) throw();
extern BOOL vxsns_dpn(VP p_excinf) throw();
extern BOOL vxsns_tex(VP p_excinf) throw();
extern BOOL vsns_ini(void) throw();
#endif /* _MACRO_ONLY */
/*
* オブジェクト属性の定義
*/
#define TA_HLNG 0x00u /* 高級言語用インタフェース */
#define TA_ASM 0x01u /* アセンブリ言語用インタフェース */
#define TA_TFIFO 0x00u /* タスクの待ち行列をFIFO順に */
#define TA_TPRI 0x01u /* タスクの待ち行列を優先度順に */
#define TA_MFIFO 0x00u /* メッセージキューをFIFO順に */
#define TA_MPRI 0x02u /* メッセージキューを優先度順に */
#define TA_ACT 0x02u /* タスクを起動された状態で生成 */
#define TA_WSGL 0x00u /* イベントフラグの待ちタスクを1つに */
#define TA_CLR 0x04u /* イベントフラグのクリア指定 */
#define TA_STA 0x02u /* 周期ハンドラを動作状態で生成 */
/*
* サービスコールの動作モードの定義
*/
#define TWF_ANDW 0x00u /* イベントフラグのAND待ち */
#define TWF_ORW 0x01u /* イベントフラグのOR待ち */
/*
* その他の定数の定義
*/
#define TSK_SELF 0 /* 自タスク指定 */
#define TSK_NONE 0 /* 該当するタスクがない */
#define TPRI_SELF 0 /* 自タスクのベース優先度の指定 */
#define TPRI_INI 0 /* タスクの起動時優先度の指定 */
/*
* 構成定数とマクロ
*/
/*
* 優先度の範囲
*/
#define TMIN_TPRI 1 /* タスク優先度の最小値 */
#define TMAX_TPRI 16 /* タスク優先度の最大値 */
#define TMIN_MPRI 1 /* メッセージ優先度の最小値 */
#define TMAX_MPRI 16 /* メッセージ優先度の最大値 */
/*
* バージョン情報
*/
#define TKERNEL_MAKER 0x0118u /* カーネルのメーカーコード */
#define TKERNEL_PRID 0x0001u /* カーネルの識別番号 */
#define TKERNEL_SPVER 0x5402u /* ITRON仕様のバージョン番号 */
#define TKERNEL_PRVER 0x1040u /* カーネルのバージョン番号 */
/*
* キューイング/ネスト回数の最大値
*/
#define TMAX_ACTCNT 1 /* 起動要求キューイング数の最大値 */
#define TMAX_WUPCNT 1 /* 起床要求キューイング数の最大値 */
#define TMAX_SUSCNT 1 /* 強制待ち要求ネスト数の最大値 */
/*
* ビットパターンのビット数
*/
#define TBIT_TEXPTN (sizeof(TEXPTN) * CHAR_BIT)
/* タスク例外要因のビット数 */
#define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT)
/* イベントフラグのビット数 */
#ifdef __cplusplus
}
#endif
#endif /* _KERNEL_H_ */
kernel_cfg.h
kernel_debug.h
linux_sigio.h
logtask.h
s_services.h
serial.h
sil.h
t_config.h
t_services.h
t_stddef.h
t_syslog.h
timer.h
kernel.h
kernel_cfg.h
kernel_debug.h
linux_sigio.h
logtask.h
s_services.h
serial.h
sil.h
t_config.h
t_services.h
t_stddef.h
t_syslog.h
timer.h