source: uKadecot/trunk/ssp/include/kernel.h@ 107

Last change on this file since 107 was 107, checked in by coas-nagasima, 9 years ago

SHIFT_JISのコードにcharsetプロパティを付けた

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
File size: 7.6 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
6 * Toyohashi Univ. of Technology, JAPAN
7 * Copyright (C) 2004-2009 by Embedded and Real-Time Systems Laboratory
8 * Graduate School of Information Science, Nagoya Univ., JAPAN
9 * Copyright (C) 2010-2015 by Naoki Saito
10 * Nagoya Municipal Industrial Research Institute, JAPAN
11 * Copyright (C) 2010-2012 by Meika Sugimoto
12 *
13 * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
15 * 再配布(以下,利用と呼ぶ)することを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
17 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース
18 * コード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
20 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
21 * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
22 * 証規定を掲載すること.
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
24 * できない形で再配布する場合には,次のいずれかの条件を満たすこと.
25 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
26 * 権表示,この利用条件および下記の無保証規定を掲載すること.
27 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
28 * 告すること.
29 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
30 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
31 * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
32 * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 *
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
35 * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
36 * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
37 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負
38 * わない.
39 *
40 */
41
42/*
43 * TOPPERS/SSPカーネル 標準ヘッダファイル
44 *
45 * TOPPERS/SSPカーネルがサポートするサービスコールの宣言と,必要なデー
46 * タ型,定数,マクロの定義を含むヘッダファイル.
47 *
48 * アセンブリ言語のソースファイルからこのファイルをインクルードする時
49 * は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を
50 * 除くようになっている.
51 *
52 * このファイルをインクルードする前にインクルードしておくべきファイル
53 * はない.
54 */
55
56#ifndef TOPPERS_KERNEL_H
57#define TOPPERS_KERNEL_H
58
59/*
60 * TOPPERS共通のデータ型・定数・マクロ
61 */
62#include <t_stddef.h>
63
64/*
65 * ターゲット依存部
66 */
67#include "target_kernel.h"
68#ifndef TOPPERS_MACRO_ONLY
69
70/*
71 * データ型の定義
72 */
73
74/*
75 * ビットパターンやオブジェクト番号の型定義
76 */
77typedef uint_t INTNO; /* 割込み番号 */
78typedef uint_t INHNO; /* 割込みハンドラ番号 */
79typedef uint_t EXCNO; /* CPU例外ハンドラ番号 */
80typedef unsigned long FLGPTN; /* イベントフラグパターン */
81
82
83/*
84 * 処理単位の型定義
85 */
86typedef void (*TASK)(intptr_t exinf);
87typedef void (*ISR)(intptr_t exinf);
88typedef void (*INTHDR)(void);
89typedef void (*EXCHDR)(void *p_excinf);
90typedef void (*INIRTN)(intptr_t exinf);
91typedef void (*TERRTN)(intptr_t exinf);
92typedef void (*CYCHDR)(intptr_t exinf);
93typedef void (*ALMHDR)(intptr_t exinf);
94
95/*
96 * メモリ領域確保のための型定義
97 */
98#ifndef TOPPERS_STK_T
99#define TOPPERS_STK_T intptr_t
100#endif /* TOPPERS_STK_T */
101typedef TOPPERS_STK_T STK_T; /* スタック領域を確保するための型 */
102
103
104/*
105 * サービスコールの宣言
106 */
107
108/*
109 * タスク管理機能
110 */
111extern ER act_tsk(ID tskid);
112extern ER iact_tsk(ID tskid);
113
114/*
115 * 同期・通信機能
116 */
117
118/* データキュー */
119extern ER psnd_dtq(ID dtqid, intptr_t data);
120extern ER ipsnd_dtq(ID dtqid, intptr_t data);
121extern ER prcv_dtq(ID dtqid, intptr_t *p_data);
122
123/* イベントフラグ */
124extern ER set_flg(ID flgid, FLGPTN setptn);
125extern ER iset_flg(ID flgid, FLGPTN setptn);
126extern ER clr_flg(ID flgid, FLGPTN clrptn);
127extern ER pol_flg(ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn);
128
129/*
130 * システム状態管理機能
131 */
132extern ER loc_cpu(void);
133extern ER iloc_cpu(void);
134extern ER unl_cpu(void);
135extern ER iunl_cpu(void);
136extern ER dis_dsp(void);
137extern ER ena_dsp(void);
138extern bool_t sns_ctx(void);
139extern bool_t sns_loc(void);
140extern bool_t sns_dsp(void);
141extern bool_t sns_dpn(void);
142extern bool_t sns_ker(void);
143extern ER ext_ker(void);
144
145/*
146 * 割込み管理機能
147 */
148extern ER dis_int(INTNO intno);
149extern ER ena_int(INTNO intno);
150
151/*
152 * 周期ハンドラ機能
153 */
154extern ER sta_cyc(ID cycid);
155extern ER stp_cyc(ID cycid);
156
157/*
158 * アラームハンドラ機能
159 */
160extern ER sta_alm(ID almid , RELTIM almtim);
161extern ER ista_alm(ID almid , RELTIM almtim);
162extern ER stp_alm(ID almid);
163extern ER istp_alm(ID almid);
164
165/*
166 * システム時刻管理機能
167 */
168extern ER get_tim(SYSTIM *p_systim);
169
170#endif /* TOPPERS_MACRO_ONLY */
171
172/*
173 * オブジェクト属性の定義
174 */
175#define TA_RSTR UINT_C(0x04) /* 制約タスク */
176
177#define TA_CLR UINT_C(0x04) /* イベントフラグのクリア指定 */
178
179#define TA_ACT UINT_C(0x02) /* タスクを起動された状態で生成 */
180
181#define TA_STA UINT_C(0x02) /* 周期ハンドラを動作状態で生成 */
182
183#define TA_NONKERNEL UINT_C(0x02) /* カーネル管理外の割込み */
184
185#define TA_ENAINT UINT_C(0x01) /* 割込み要求禁止フラグをクリア */
186#define TA_EDGE UINT_C(0x02) /* エッジトリガ */
187
188/*
189 * サービスコールの動作モードの定義
190 */
191#define TWF_ORW UINT_C(0x01) /* イベントフラグのOR待ち */
192#define TWF_ANDW UINT_C(0x02) /* イベントフラグのAND待ち */
193
194/*
195 * その他の定数の定義
196 */
197#define TSK_SELF 0 /* 自タスク指定 */
198#define TSK_NONE 0 /* 該当するタスクがない */
199
200#define TPRI_INI 0 /* タスクの起動時優先度 */
201
202#define TIPM_ENAALL 0 /* 割込み優先度マスク全解除 */
203
204/*
205 * 構成定数とマクロ
206 */
207
208/*
209 * 優先度の範囲
210 */
211#define TMIN_TPRI 1 /* タスク優先度の最小値(最高値)*/
212#ifndef TMAX_TPRI
213 #define TMAX_TPRI 16 /* タスク優先度の最大値(最低値)*/
214#elif (TMAX_TPRI != 8) && (TMAX_TPRI != 16)
215 #error "TMAX_TPRI must defined 8 or 16."
216#endif /* TMAX_TPRI */
217
218#define TMIN_ISRPRI 1 /* 割込みサービスルーチン優先度の最小値 */
219#ifndef TMAX_ISRPRI
220 #define TMAX_ISRPRI 16 /* 割込みサービスルーチン優先度の最大値 */
221#elif (TMAX_ISRPRI != 8) && (TMAX_ISRPRI != 16)
222 #error "TMAX_ISRPRI must defined 8 or 16."
223#endif /* TMAX_ISRPRI */
224
225/*
226 * バージョン情報
227 */
228#define TKERNEL_MAKER UINT_C(0x0118) /* カーネルのメーカーコード */
229#define TKERNEL_PRID UINT_C(0x0007) /* カーネルの識別番号 */
230#define TKERNEL_SPVER UINT_C(0xf511) /* カーネル仕様のバージョン番号 */
231#define TKERNEL_PRVER UINT_C(0x1030) /* カーネルのバージョン番号 */
232
233/*
234 * キューイング回数の最大値
235 */
236#define TMAX_ACTCNT UINT_C(1) /* 起動要求キューイング数の最大値 */
237
238/*
239 * ビットパターンのビット数
240 */
241#ifndef TBIT_FLGPTN /* イベントフラグのビット数 */
242#define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT)
243#endif /* TBIT_FLGPTN */
244
245/*
246 * メモリ領域確保のためのマクロ
247 *
248 * 以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ
249 * ることを仮定している.
250 */
251#ifndef TOPPERS_COUNT_SZ
252#define TOPPERS_COUNT_SZ(sz, unit) (((sz) + (unit) - 1) / (unit))
253#endif /* TOPPERS_COUNT_SZ */
254#ifndef TOPPERS_ROUND_SZ
255#define TOPPERS_ROUND_SZ(sz, unit) (((sz) + (unit) - 1) & ~((unit) - 1))
256#endif /* TOPPERS_ROUND_SZ */
257
258#define COUNT_STK_T(sz) TOPPERS_COUNT_SZ((sz), sizeof(STK_T))
259#define ROUND_STK_T(sz) TOPPERS_ROUND_SZ((sz), sizeof(STK_T))
260
261/*
262 * その他の構成定数
263 */
264#define TMAX_MAXCYC UINT_C(16) /* 周期ハンドラの最大数 */
265#define TMAX_MAXALM UINT_C(16) /* アラームハンドラの最大数 */
266
267#endif /* TOPPERS_KERNEL_H */
Note: See TracBrowser for help on using the repository browser.