source: anotherchoice/tags/jsp-1.4.4-full-UTF8/include/kernel.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 11.1 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * 上記著作権者
12は,以下の (1)〜(4) の条件か,Free Software Foundation
13 * によってå…
14¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
15 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
16 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
17å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
18 * 利用と呼ぶ)することを無償で許諾する.
19 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
20 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21 * スコード中に含まれていること.
22 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
23 * 用できる形で再é…
24å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
25å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
26 * 者
27マニュアルなど)に,上記の著作権表示,この利用条件および下記
28 * の無保証規定を掲載すること.
29 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
30 * 用できない形で再é…
31å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
32 * と.
33 * (a) 再é…
34å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
35マニュアルなど)に,上記の著
36 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
37 * (b) 再é…
38å¸ƒã®å½¢æ…
39‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
40 * 報告すること.
41 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
42 * 害からも,上記著作権者
43およびTOPPERSプロジェクトをå…
44è²¬ã™ã‚‹ã“と.
45 *
46 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
47お
48 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
49 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
50 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
51 *
52 * @(#) $Id: kernel.h,v 1.22 2007/05/08 07:33:51 honda Exp $
53 */
54
55/*
56 * μITRON4.0仕様標準インクルードファイル
57 *
58 * このファイルでは,スタンダードプロファイルで必
59要なものと,JSPカー
60 * ネル独自の拡張機能で必
61要なものだけを定義している.データ型の定義は,
62 * スタンダードプロファイルを満たすちょうどの長さにはしていない.
63 *
64 * アセンブリ言語のソースファイルやシステムコンフィギュレーションファ
65 * イルからこのファイルをインクルードする時は,_MACRO_ONLY を定義して
66 * おくことで,マクロ定義以外の記述を除くことができる.
67 *
68 * このインクルードファイルは,標準インクルードファイル(t_services.h
69 * と jsp_kernel.h)でインクルードされる.また,他の ITRON仕様OS から
70 * ソフトウェアをポーティングする場合などには,このファイルを直接イン
71 * クルードしてもよい.この例外を除いて,他のファイルから直接インクルー
72 * ドされることはない.
73 *
74 * この中でインクルードしているファイルを除いて,他のインクルードファ
75 * イルに依存していない.
76 */
77
78#ifndef _KERNEL_H_
79#define _KERNEL_H_
80
81#ifdef __cplusplus
82extern "C" {
83#endif
84
85/*
86 * カーネル・アプリケーション å…
87±é€šã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰ãƒ•ã‚¡ã‚¤ãƒ«
88 */
89#include <t_stddef.h>
90
91/*
92 * ITRON仕様å…
93±é€šè¦å®šã®ãƒ‡ãƒ¼ã‚¿åž‹ãƒ»å®šæ•°ãƒ»ãƒžã‚¯ãƒ­
94 */
95#include <itron.h>
96
97/*
98 * システムやプロセッサに依存する定義
99 */
100#include <sys_defs.h>
101#include <cpu_defs.h>
102
103/*
104 * システムログサービスのための定義
105 */
106#include <t_syslog.h>
107
108/*
109 * 補助マクロ
110 */
111#define TROUND_VP(sz) (((sz) + sizeof(VP) - 1) & ~(sizeof(VP) - 1))
112#define TCOUNT_VP(sz) (((sz) + sizeof(VP) - 1) / sizeof(VP))
113
114/*
115 * データ型の定義
116 */
117#ifndef _MACRO_ONLY
118
119typedef UINT TEXPTN; /* タスク例外要因のビットパターン */
120typedef UINT FLGPTN; /* イベントフラグのビットパターン */
121
122typedef struct t_msg { /* メールボックスのメッセージヘッダ */
123 struct t_msg *next;
124} T_MSG;
125
126typedef struct t_msg_pri { /* 優å…
127ˆåº¦ä»˜ããƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãƒ˜ãƒƒãƒ€ */
128 T_MSG msgque; /* メッセージヘッダ */
129 PRI msgpri; /* メッセージ優å…
130ˆåº¦ */
131} T_MSG_PRI;
132
133#endif /* _MACRO_ONLY */
134
135/*
136 * サービスコールの宣言
137 */
138#ifndef _MACRO_ONLY
139
140/*
141 * タスク管理機能
142 */
143extern ER act_tsk(ID tskid) throw();
144extern ER iact_tsk(ID tskid) throw();
145extern ER_UINT can_act(ID tskid) throw();
146extern void ext_tsk(void) throw();
147extern ER ter_tsk(ID tskid) throw();
148extern ER chg_pri(ID tskid, PRI tskpri) throw();
149extern ER get_pri(ID tskid, PRI *p_tskpri) throw();
150
151/*
152 * タスク付属同期機能
153 */
154extern ER slp_tsk(void) throw();
155extern ER tslp_tsk(TMO tmout) throw();
156extern ER wup_tsk(ID tskid) throw();
157extern ER iwup_tsk(ID tskid) throw();
158extern ER_UINT can_wup(ID tskid) throw();
159extern ER rel_wai(ID tskid) throw();
160extern ER irel_wai(ID tskid) throw();
161extern ER sus_tsk(ID tskid) throw();
162extern ER rsm_tsk(ID tskid) throw();
163extern ER frsm_tsk(ID tskid) throw();
164extern ER dly_tsk(RELTIM dlytim) throw();
165
166/*
167 * タスク例外処理機能
168 */
169extern ER ras_tex(ID tskid, TEXPTN rasptn) throw();
170extern ER iras_tex(ID tskid, TEXPTN rasptn) throw();
171extern ER dis_tex(void) throw();
172extern ER ena_tex(void) throw();
173extern BOOL sns_tex(void) throw();
174
175/*
176 * 同期・通信機能
177 */
178extern ER sig_sem(ID semid) throw();
179extern ER isig_sem(ID semid) throw();
180extern ER wai_sem(ID semid) throw();
181extern ER pol_sem(ID semid) throw();
182extern ER twai_sem(ID semid, TMO tmout) throw();
183
184extern ER set_flg(ID flgid, FLGPTN setptn) throw();
185extern ER iset_flg(ID flgid, FLGPTN setptn) throw();
186extern ER clr_flg(ID flgid, FLGPTN clrptn) throw();
187extern ER wai_flg(ID flgid, FLGPTN waiptn,
188 MODE wfmode, FLGPTN *p_flgptn) throw();
189extern ER pol_flg(ID flgid, FLGPTN waiptn,
190 MODE wfmode, FLGPTN *p_flgptn) throw();
191extern ER twai_flg(ID flgid, FLGPTN waiptn,
192 MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
193
194extern ER snd_dtq(ID dtqid, VP_INT data) throw();
195extern ER psnd_dtq(ID dtqid, VP_INT data) throw();
196extern ER ipsnd_dtq(ID dtqid, VP_INT data) throw();
197extern ER tsnd_dtq(ID dtqid, VP_INT data, TMO tmout) throw();
198extern ER fsnd_dtq(ID dtqid, VP_INT data) throw();
199extern ER ifsnd_dtq(ID dtqid, VP_INT data) throw();
200extern ER rcv_dtq(ID dtqid, VP_INT *p_data) throw();
201extern ER prcv_dtq(ID dtqid, VP_INT *p_data) throw();
202extern ER trcv_dtq(ID dtqid, VP_INT *p_data, TMO tmout) throw();
203
204extern ER snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
205extern ER rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
206extern ER prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
207extern ER trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
208
209/*
210 * メモリプール管理機能
211 */
212extern ER get_mpf(ID mpfid, VP *p_blk) throw();
213extern ER pget_mpf(ID mpfid, VP *p_blk) throw();
214extern ER tget_mpf(ID mpfid, VP *p_blk, TMO tmout) throw();
215extern ER rel_mpf(ID mpfid, VP blk) throw();
216
217/*
218 * 時間管理機能
219 */
220extern ER set_tim(const SYSTIM *p_systim) throw();
221extern ER get_tim(SYSTIM *p_systim) throw();
222extern ER isig_tim(void) throw();
223
224extern ER sta_cyc(ID cycid) throw();
225extern ER stp_cyc(ID cycid) throw();
226
227/*
228 * システム状æ…
229‹ç®¡ç†æ©Ÿèƒ½
230 */
231extern ER rot_rdq(PRI tskpri) throw();
232extern ER irot_rdq(PRI tskpri) throw();
233extern ER get_tid(ID *p_tskid) throw();
234extern ER iget_tid(ID *p_tskid) throw();
235extern ER loc_cpu(void) throw();
236extern ER iloc_cpu(void) throw();
237extern ER unl_cpu(void) throw();
238extern ER iunl_cpu(void) throw();
239extern ER dis_dsp(void) throw();
240extern ER ena_dsp(void) throw();
241extern BOOL sns_ctx(void) throw();
242extern BOOL sns_loc(void) throw();
243extern BOOL sns_dsp(void) throw();
244extern BOOL sns_dpn(void) throw();
245
246/*
247 * 実装
248独自サービスコール
249 */
250extern BOOL vxsns_ctx(VP p_excinf) throw();
251extern BOOL vxsns_loc(VP p_excinf) throw();
252extern BOOL vxsns_dsp(VP p_excinf) throw();
253extern BOOL vxsns_dpn(VP p_excinf) throw();
254extern BOOL vxsns_tex(VP p_excinf) throw();
255extern BOOL vsns_ini(void) throw();
256
257#endif /* _MACRO_ONLY */
258
259/*
260 * オブジェクト属性の定義
261 */
262#define TA_HLNG 0x00u /* 高級言語用インタフェース */
263#define TA_ASM 0x01u /* アセンブリ言語用インタフェース */
264
265#define TA_TFIFO 0x00u /* タスクの待
266ち行列をFIFO順に */
267#define TA_TPRI 0x01u /* タスクの待
268ち行列を優å…
269ˆåº¦é †ã« */
270
271#define TA_MFIFO 0x00u /* メッセージキューをFIFO順に */
272#define TA_MPRI 0x02u /* メッセージキューを優å…
273ˆåº¦é †ã« */
274
275#define TA_ACT 0x02u /* タスクを起動された状æ…
276‹ã§ç”Ÿæˆ */
277
278#define TA_WSGL 0x00u /* イベントフラグの待
279ちタスクを1つに */
280#define TA_CLR 0x04u /* イベントフラグのクリア指定 */
281
282#define TA_STA 0x02u /* 周期ハンドラを動作状æ…
283‹ã§ç”Ÿæˆ */
284
285/*
286 * サービスコールの動作モードの定義
287 */
288#define TWF_ANDW 0x00u /* イベントフラグのAND待
289ち */
290#define TWF_ORW 0x01u /* イベントフラグのOR待
291ち */
292
293/*
294 * その他の定数の定義
295 */
296#define TSK_SELF 0 /* 自タスク指定 */
297#define TSK_NONE 0 /* 該当するタスクがない */
298#define TPRI_SELF 0 /* 自タスクのベース優å…
299ˆåº¦ã®æŒ‡å®š */
300#define TPRI_INI 0 /* タスクの起動時優å…
301ˆåº¦ã®æŒ‡å®š */
302
303/*
304 * 構成定数とマクロ
305 */
306
307/*
308 * 優å…
309ˆåº¦ã®ç¯„囲
310 */
311#define TMIN_TPRI 1 /* タスク優å…
312ˆåº¦ã®æœ€å°å€¤ */
313#define TMAX_TPRI 16 /* タスク優å…
314ˆåº¦ã®æœ€å¤§å€¤ */
315#define TMIN_MPRI 1 /* メッセージ優å…
316ˆåº¦ã®æœ€å°å€¤ */
317#define TMAX_MPRI 16 /* メッセージ優å…
318ˆåº¦ã®æœ€å¤§å€¤ */
319
320/*
321 * バージョン情
322å ±
323 */
324#define TKERNEL_MAKER 0x0118u /* カーネルのメーカーコード */
325#define TKERNEL_PRID 0x0001u /* カーネルの識別番号 */
326#define TKERNEL_SPVER 0x5402u /* ITRON仕様のバージョン番号 */
327#define TKERNEL_PRVER 0x1044u /* カーネルのバージョン番号 */
328
329/*
330 * キューイング/ネスト回数の最大値
331 */
332#define TMAX_ACTCNT 1 /* 起動要求キューイング数の最大値 */
333#define TMAX_WUPCNT 1 /* 起床要求キューイング数の最大値 */
334#define TMAX_SUSCNT 1 /* 強制待
335ち要求ネスト数の最大値 */
336
337/*
338 * ビットパターンのビット数
339 */
340#define TBIT_TEXPTN (sizeof(TEXPTN) * CHAR_BIT)
341 /* タスク例外要因のビット数 */
342#define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT)
343 /* イベントフラグのビット数 */
344
345#ifdef __cplusplus
346}
347#endif
348
349#endif /* _KERNEL_H_ */
Note: See TracBrowser for help on using the repository browser.