source: uKadecot/trunk/ssp/kernel/check.h

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

MIMEプロパティの変更

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-chdr; charset=SHIFT_JIS
File size: 7.1 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) 2005-2007 by Embedded and Real-Time Systems Laboratory
8 * Graduate School of Information Science, Nagoya Univ., JAPAN
9 * Copyright (C) 2010 by Naoki Saito
10 * Nagoya Municipal Industrial Research Institute, JAPAN
11 * Copyright (C) 2011 by Meika Sugimoto
12 *
13 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
14 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
15 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
18 * スコード中に含まれていること.
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
22 * の無保証規定を掲載すること.
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
25 * と.
26 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
28 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
29 * 報告すること.
30 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
32 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
33 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
34 * 免責すること.
35 *
36 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
37 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
38 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
39 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
40 * の責任を負わない.
41 *
42 * @(#) $Id: check.h 108 2015-06-11 09:15:46Z coas-nagasima $
43 */
44/*
45 * TOPPERS/ASP Kernel
46 * Toyohashi Open Platform for Embedded Real-Time Systems/
47 * Advanced Standard Profile Kernel
48 *
49 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
50 * Toyohashi Univ. of Technology, JAPAN
51 * Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
52 * Graduate School of Information Science, Nagoya Univ., JAPAN
53 *
54 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
55 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
56 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
57 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
58 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
59 * スコード中に含まれていること.
60 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
61 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
62 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
63 * の無保証規定を掲載すること.
64 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
65 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
66 * と.
67 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
68 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
69 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
70 * 報告すること.
71 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
72 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
73 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
74 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
75 * 免責すること.
76 *
77 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
78 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
79 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
80 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
81 * の責任を負わない.
82 *
83 * @(#) $Id: check.h 108 2015-06-11 09:15:46Z coas-nagasima $
84 */
85
86/*
87 * エラーチェック用マクロ
88 */
89
90#ifndef TOPPERS_CHECK_H
91#define TOPPERS_CHECK_H
92
93/*
94 * タスク優先度の範囲の判定
95 */
96#define VALID_TPRI(tpri) (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
97
98/*
99 * 割込み番号のチェック(E_PAR)
100 */
101#define CHECK_INTNO_DISINT(intno) { \
102 if (!VALID_INTNO_DISINT(intno)) { \
103 ercd = E_PAR; \
104 goto error_exit; \
105 } \
106}
107
108/*
109 * その他のパラメータエラーのチェック(E_PAR)
110 */
111#define CHECK_PAR(exp) { \
112 if (!(exp)) { \
113 ercd = E_PAR; \
114 goto error_exit; \
115 } \
116}
117
118/*
119 * オブジェクトIDの範囲の判定
120 */
121#define VALID_TSKID(tskid) \
122 (((ID)TMIN_TSKID <= (tskid)) && ((ID)(tskid) <= tmax_tskid))
123#define VALID_FLGID(flgid) \
124 (((ID)TMIN_FLGID <= (flgid)) && ((ID)(flgid) <= tmax_flgid))
125#define VALID_DTQID(dtqid) \
126 (((ID)TMIN_DTQID <= (dtqid)) && ((ID)(dtqid) <= tmax_dtqid))
127#define VALID_CYCID(cycid) \
128 ((((ID)TMIN_CYCID) <= (cycid)) && ((ID)(cycid) <= tmax_cycid))
129#define VALID_ALMID(almid) \
130 (((ID)TMIN_ALMID <= (almid)) && ((ID)(almid) <= tmax_almid))
131
132/*
133 * オブジェクトIDのチェック(E_ID)
134 */
135#define CHECK_TSKID(tskid) { \
136 if ((!VALID_TSKID(tskid))) { \
137 ercd = E_ID; \
138 goto error_exit; \
139 } \
140}
141
142#define CHECK_TSKID_SELF(tskid) { \
143 if (!(VALID_TSKID(tskid) || ((tskid) == TSK_SELF))) { \
144 ercd = E_ID; \
145 goto error_exit; \
146 } \
147}
148
149
150#define CHECK_FLGID(flgid) { \
151 if (!VALID_FLGID(flgid)) { \
152 ercd = E_ID; \
153 goto error_exit; \
154 } \
155}
156
157#define CHECK_DTQID(dtqid) { \
158 if (!VALID_DTQID(dtqid)) { \
159 ercd = E_ID; \
160 goto error_exit; \
161 } \
162}
163
164#define CHECK_CYCID(cycid) { \
165 if ((!VALID_CYCID(cycid))) { \
166 ercd = E_ID; \
167 goto error_exit; \
168 } \
169}
170
171#define CHECK_ALMID(almid) { \
172 if (!VALID_ALMID(almid)) { \
173 ercd = E_ID; \
174 goto error_exit; \
175 } \
176}
177
178/*
179 * 呼出しコンテキストのチェック(E_CTX)
180 */
181#define CHECK_TSKCTX() { \
182 if (sense_context()) { \
183 ercd = E_CTX; \
184 goto error_exit; \
185 } \
186}
187
188#define CHECK_INTCTX() { \
189 if (!sense_context()) { \
190 ercd = E_CTX; \
191 goto error_exit; \
192 } \
193}
194
195/*
196 * 呼出しコンテキストとCPUロック状態のチェック(E_CTX)
197 */
198#define CHECK_TSKCTX_UNL() { \
199 if ((sense_context()) || (t_sense_lock())) { \
200 ercd = E_CTX; \
201 goto error_exit; \
202 } \
203}
204
205#define CHECK_INTCTX_UNL() { \
206 if ((!sense_context()) || (i_sense_lock())) { \
207 ercd = E_CTX; \
208 goto error_exit; \
209 } \
210}
211
212/*
213 * その他のコンテキストエラーのチェック(E_CTX)
214 */
215#define CHECK_CTX(exp) { \
216 if (!(exp)) { \
217 ercd = E_CTX; \
218 goto error_exit; \
219 } \
220}
221
222#endif /* TOPPERS_CHECK_H */
Note: See TracBrowser for help on using the repository browser.