source: asp_ewarm/asp-1.7.0/extension/rstr_task/include/kernel.h@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 16.9 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced 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-2010 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
12 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
13 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
14 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
15 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
16 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
17 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
18 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
19ƒƒ“ƒgi—˜—p
20 * ŽÒƒ}ƒjƒ…
21ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
22 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
23 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
24 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
25 * ‚ƁD
26 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
27ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
28ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
29 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
30 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
31 * •ñ‚·‚邱‚ƁD
32 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
33 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
34 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
35 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
36 * –Ɛӂ·‚邱‚ƁD
37 *
38 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
39 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
40 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
41 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
42 * ‚̐ӔC‚𕉂í‚È‚¢D
43 *
44 * $Id: kernel.h 1959 2010-11-20 02:17:27Z ertl-hiro $
45 */
46
47/*
48 * TOPPERS/ASPƒJ[ƒlƒ‹ •W€ƒwƒbƒ_ƒtƒ@ƒCƒ‹
49 *
50 * TOPPERS/ASPƒJ[ƒlƒ‹‚ªƒTƒ|[ƒg‚·‚éƒT[ƒrƒXƒR[ƒ‹‚̐錾‚ƁC•K—v‚ȃf[
51 * ƒ^Œ^C’萔Cƒ}ƒNƒ‚Ì’è‹`‚ðŠÜ‚Þƒwƒbƒ_ƒtƒ@ƒCƒ‹D
52 *
53 * ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
54 * ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
55 * œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
56 *
57 * ‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɃCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚¨‚­‚ׂ«ƒtƒ@ƒCƒ‹
58 * ‚Í‚È‚¢D
59 */
60
61#ifndef TOPPERS_KERNEL_H
62#define TOPPERS_KERNEL_H
63
64#ifdef __cplusplus
65extern "C" {
66#endif
67
68/*
69 * TOPPERS‹¤’ʂ̃f[ƒ^Œ^E’萔Eƒ}ƒNƒ
70 */
71#include <t_stddef.h>
72
73/*
74 * ƒ^[ƒQƒbƒgˆË‘¶•”
75 */
76#include "target_kernel.h"
77
78#ifndef TOPPERS_MACRO_ONLY
79
80/*
81 * ƒf[ƒ^Œ^‚Ì’è‹`
82 */
83
84/*
85 * ƒrƒbƒgƒpƒ^[ƒ“‚âƒIƒuƒWƒFƒNƒg”ԍ†‚ÌŒ^’è‹`
86 */
87typedef uint_t TEXPTN; /* ƒ^ƒXƒN—áŠO—vˆö‚̃rƒbƒgƒpƒ^[ƒ“ */
88typedef uint_t FLGPTN; /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃rƒbƒgƒpƒ^[ƒ“ */
89typedef uint_t INTNO; /* Š„ž‚ݔԍ† */
90typedef uint_t INHNO; /* Š„ž‚݃nƒ“ƒhƒ‰”ԍ† */
91typedef uint_t EXCNO; /* CPU—áŠOƒnƒ“ƒhƒ‰”ԍ† */
92
93/*
94 * ˆ—’PˆÊ‚ÌŒ^’è‹`
95 */
96typedef void (*TASK)(intptr_t exinf);
97typedef void (*TEXRTN)(TEXPTN texptn, intptr_t exinf);
98typedef void (*CYCHDR)(intptr_t exinf);
99typedef void (*ALMHDR)(intptr_t exinf);
100typedef void (*ISR)(intptr_t exinf);
101typedef void (*INTHDR)(void);
102typedef void (*EXCHDR)(void *p_excinf);
103typedef void (*INIRTN)(intptr_t exinf);
104typedef void (*TERRTN)(intptr_t exinf);
105
106/*
107 * ƒƒ‚ƒŠ—̈æŠm•Û‚Ì‚½‚ß‚ÌŒ^’è‹`
108 */
109#ifndef TOPPERS_STK_T
110#define TOPPERS_STK_T intptr_t
111#endif /* TOPPERS_STK_T */
112typedef TOPPERS_STK_T STK_T; /* ƒXƒ^ƒbƒN—̈æ‚ðŠm•Û‚·‚邽‚ß‚ÌŒ^ */
113
114#ifndef TOPPERS_MPF_T
115#define TOPPERS_MPF_T intptr_t
116#endif /* TOPPERS_MPF_T */
117typedef TOPPERS_MPF_T MPF_T; /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚ðŠm•Û‚·‚邽‚ß‚ÌŒ^ */
118
119/*
120 * ƒƒbƒZ[ƒWƒwƒbƒ_‚ÌŒ^’è‹`
121 */
122typedef struct t_msg { /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚̃ƒbƒZ[ƒWƒwƒbƒ_ */
123 struct t_msg *pk_next;
124} T_MSG;
125
126typedef struct t_msg_pri { /* —Dæ“x•t‚«ƒƒbƒZ[ƒWƒwƒbƒ_ */
127 T_MSG msgque; /* ƒƒbƒZ[ƒWƒwƒbƒ_ */
128 PRI msgpri; /* ƒƒbƒZ[ƒW—Dæ“x */
129} T_MSG_PRI;
130
131/*
132 * ƒpƒPƒbƒgŒ`Ž®‚Ì’è‹`
133 */
134typedef struct t_rtsk {
135 STAT tskstat; /* ƒ^ƒXƒNó‘Ô */
136 PRI tskpri; /* ƒ^ƒXƒN‚ÌŒ»Ý—Dæ“x */
137 PRI tskbpri; /* ƒ^ƒXƒN‚̃x[ƒX—Dæ“x */
138 STAT tskwait; /* ‘Ò‚¿—vˆö */
139 ID wobjid; /* ‘Ò‚¿‘Ώۂ̃IƒuƒWƒFƒNƒg‚ÌID */
140 TMO lefttmo; /* ƒ^ƒCƒ€ƒAƒEƒg‚·‚é‚Ü‚Å‚ÌŽžŠÔ */
141 uint_t actcnt; /* ‹N“®—v‹ƒLƒ…
142[ƒCƒ“ƒO” */
143 uint_t wupcnt; /* ‹N°—v‹ƒLƒ…
144[ƒCƒ“ƒO” */
145} T_RTSK;
146
147typedef struct t_rtex {
148 STAT texstat; /* ƒ^ƒXƒN—áŠOˆ—‚̏ó‘Ô */
149 TEXPTN pndptn; /* •Û—¯—áŠO—vˆö */
150} T_RTEX;
151
152typedef struct t_rsem {
153 ID wtskid; /* ƒZƒ}ƒtƒH‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
154 uint_t semcnt; /* ƒZƒ}ƒtƒH‚ÌŒ»Ý‚ÌŽ‘Œ¹” */
155} T_RSEM;
156
157typedef struct t_rflg {
158 ID wtskid; /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
159 FLGPTN flgptn; /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌŒ»Ý‚̃rƒbƒgƒpƒ^[ƒ“ */
160} T_RFLG;
161
162typedef struct t_rdtq {
163 ID stskid; /* ƒf[ƒ^ƒLƒ…
164[‚Ì‘—M‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
165 ID rtskid; /* ƒf[ƒ^ƒLƒ…
166[‚ÌŽóM‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
167 uint_t sdtqcnt; /* ƒf[ƒ^ƒLƒ…
168[ŠÇ——̈æ‚ÉŠi”[‚³‚ê‚Ä‚¢‚éƒf[ƒ^‚̐” */
169} T_RDTQ;
170
171typedef struct t_rpdq {
172 ID stskid; /* —Dæ“xƒf[ƒ^ƒLƒ…
173[‚Ì‘—M‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN
174 ‚ÌID”ԍ† */
175 ID rtskid; /* —Dæ“xƒf[ƒ^ƒLƒ…
176[‚ÌŽóM‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN
177 ‚ÌID”ԍ† */
178 uint_t spdqcnt; /* —Dæ“xƒf[ƒ^ƒLƒ…
179[ŠÇ——̈æ‚ÉŠi”[‚³‚ê‚Ä‚¢‚éƒf[
180 ƒ^‚̐” */
181} T_RPDQ;
182
183typedef struct t_rmbx {
184 ID wtskid; /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
185 T_MSG *pk_msg; /* ƒƒbƒZ[ƒWƒLƒ…
186[‚̐擪‚ɂ‚Ȃª‚ꂽƒƒbƒZ[ƒW
187 ‚̐擪”Ô’n */
188} T_RMBX;
189
190typedef struct t_rmpf {
191 ID wtskid; /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚Ì
192 ID”ԍ† */
193 uint_t fblkcnt; /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̋󂫃ƒ‚ƒŠ—̈æ‚ÉŠ„‚è
194 •t‚¯‚邱‚Æ‚ª‚Å‚«‚éŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚̐” */
195} T_RMPF;
196
197typedef struct t_rcyc {
198 STAT cycstat; /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
199 RELTIM lefttim; /* ŽŸ‚ÉŽüŠúƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞‚Ü‚Å‚Ì‘Š‘ÎŽžŠÔ */
200} T_RCYC;
201
202typedef struct t_ralm {
203 STAT almstat; /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
204 RELTIM lefttim; /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞‚Ü‚Å‚Ì‘Š‘ÎŽžŠÔ */
205} T_RALM;
206
207/*
208 * ƒT[ƒrƒXƒR[ƒ‹‚̐錾
209 */
210
211/*
212 * ƒ^ƒXƒNŠÇ—‹@”\
213 */
214extern ER act_tsk(ID tskid) throw();
215extern ER iact_tsk(ID tskid) throw();
216extern ER_UINT can_act(ID tskid) throw();
217extern ER ext_tsk(void) throw();
218extern ER ter_tsk(ID tskid) throw();
219extern ER chg_pri(ID tskid, PRI tskpri) throw();
220extern ER ras_pri(PRI tskpri) throw();
221extern ER get_pri(ID tskid, PRI *p_tskpri) throw();
222extern ER get_inf(intptr_t *p_exinf) throw();
223extern ER ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
224
225/*
226 * ƒ^ƒXƒN•t‘®“¯Šú‹@”\
227 */
228extern ER slp_tsk(void) throw();
229extern ER tslp_tsk(TMO tmout) throw();
230extern ER wup_tsk(ID tskid) throw();
231extern ER iwup_tsk(ID tskid) throw();
232extern ER_UINT can_wup(ID tskid) throw();
233extern ER rel_wai(ID tskid) throw();
234extern ER irel_wai(ID tskid) throw();
235extern ER sus_tsk(ID tskid) throw();
236extern ER rsm_tsk(ID tskid) throw();
237extern ER dly_tsk(RELTIM dlytim) throw();
238
239/*
240 * ƒ^ƒXƒN—áŠOˆ—‹@”\
241 */
242extern ER ras_tex(ID tskid, TEXPTN rasptn) throw();
243extern ER iras_tex(ID tskid, TEXPTN rasptn) throw();
244extern ER dis_tex(void) throw();
245extern ER ena_tex(void) throw();
246extern bool_t sns_tex(void) throw();
247extern ER ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
248
249/*
250 * “¯ŠúE’ʐM‹@”\
251 */
252extern ER sig_sem(ID semid) throw();
253extern ER isig_sem(ID semid) throw();
254extern ER wai_sem(ID semid) throw();
255extern ER pol_sem(ID semid) throw();
256extern ER twai_sem(ID semid, TMO tmout) throw();
257extern ER ini_sem(ID semid) throw();
258extern ER ref_sem(ID semid, T_RSEM *pk_rsem) throw();
259
260extern ER set_flg(ID flgid, FLGPTN setptn) throw();
261extern ER iset_flg(ID flgid, FLGPTN setptn) throw();
262extern ER clr_flg(ID flgid, FLGPTN clrptn) throw();
263extern ER wai_flg(ID flgid, FLGPTN waiptn,
264 MODE wfmode, FLGPTN *p_flgptn) throw();
265extern ER pol_flg(ID flgid, FLGPTN waiptn,
266 MODE wfmode, FLGPTN *p_flgptn) throw();
267extern ER twai_flg(ID flgid, FLGPTN waiptn,
268 MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
269extern ER ini_flg(ID flgid) throw();
270extern ER ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
271
272extern ER snd_dtq(ID dtqid, intptr_t data) throw();
273extern ER psnd_dtq(ID dtqid, intptr_t data) throw();
274extern ER ipsnd_dtq(ID dtqid, intptr_t data) throw();
275extern ER tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
276extern ER fsnd_dtq(ID dtqid, intptr_t data) throw();
277extern ER ifsnd_dtq(ID dtqid, intptr_t data) throw();
278extern ER rcv_dtq(ID dtqid, intptr_t *p_data) throw();
279extern ER prcv_dtq(ID dtqid, intptr_t *p_data) throw();
280extern ER trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
281extern ER ini_dtq(ID dtqid) throw();
282extern ER ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
283
284extern ER snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
285extern ER psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
286extern ER ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
287extern ER tsnd_pdq(ID pdqid, intptr_t data,
288 PRI datapri, TMO tmout) throw();
289extern ER rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
290extern ER prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
291extern ER trcv_pdq(ID pdqid, intptr_t *p_data,
292 PRI *p_datapri, TMO tmout) throw();
293extern ER ini_pdq(ID pdqid) throw();
294extern ER ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
295
296extern ER snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
297extern ER rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
298extern ER prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
299extern ER trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
300extern ER ini_mbx(ID mbxid) throw();
301extern ER ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
302
303/*
304 * ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—‹@”\
305 */
306extern ER get_mpf(ID mpfid, void **p_blk) throw();
307extern ER pget_mpf(ID mpfid, void **p_blk) throw();
308extern ER tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
309extern ER rel_mpf(ID mpfid, void *blk) throw();
310extern ER ini_mpf(ID mpfid) throw();
311extern ER ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
312
313/*
314 * ŽžŠÔŠÇ—‹@”\
315 */
316extern ER get_tim(SYSTIM *p_systim) throw();
317extern ER get_utm(SYSUTM *p_sysutm) throw();
318
319extern ER sta_cyc(ID cycid) throw();
320extern ER stp_cyc(ID cycid) throw();
321extern ER ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
322
323extern ER sta_alm(ID almid, RELTIM almtim) throw();
324extern ER ista_alm(ID almid, RELTIM almtim) throw();
325extern ER stp_alm(ID almid) throw();
326extern ER istp_alm(ID almid) throw();
327extern ER ref_alm(ID almid, T_RALM *pk_ralm) throw();
328
329/*
330 * ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
331 */
332extern ER rot_rdq(PRI tskpri) throw();
333extern ER irot_rdq(PRI tskpri) throw();
334extern ER get_tid(ID *p_tskid) throw();
335extern ER iget_tid(ID *p_tskid) throw();
336extern ER loc_cpu(void) throw();
337extern ER iloc_cpu(void) throw();
338extern ER unl_cpu(void) throw();
339extern ER iunl_cpu(void) throw();
340extern ER dis_dsp(void) throw();
341extern ER ena_dsp(void) throw();
342extern bool_t sns_ctx(void) throw();
343extern bool_t sns_loc(void) throw();
344extern bool_t sns_dsp(void) throw();
345extern bool_t sns_dpn(void) throw();
346extern bool_t sns_ker(void) throw();
347extern ER ext_ker(void) throw();
348
349/*
350 * Š„ž‚ÝŠÇ—‹@”\
351 */
352extern ER dis_int(INTNO intno) throw();
353extern ER ena_int(INTNO intno) throw();
354extern ER chg_ipm(PRI intpri) throw();
355extern ER get_ipm(PRI *p_intpri) throw();
356
357/*
358 * CPU—áŠOŠÇ—‹@”\
359 */
360extern bool_t xsns_dpn(void *p_excinf) throw();
361extern bool_t xsns_xpn(void *p_excinf) throw();
362
363#endif /* TOPPERS_MACRO_ONLY */
364
365/*
366 * ƒIƒuƒWƒFƒNƒg‘®«‚Ì’è‹`
367 */
368#define TA_ACT UINT_C(0x02) /* ƒ^ƒXƒN‚ð‹N“®‚³‚ꂽó‘ԂŐ¶¬ */
369#define TA_RSTR UINT_C(0x04) /* §–ñƒ^ƒXƒN */
370
371#define TA_TPRI UINT_C(0x01) /* ƒ^ƒXƒN‚Ì‘Ò‚¿s—ñ‚ð—Dæ“x‡‚É */
372#define TA_MPRI UINT_C(0x02) /* ƒƒbƒZ[ƒWƒLƒ…
373[‚ð—Dæ“x‡‚É */
374
375#define TA_WMUL UINT_C(0x02) /* •¡”‚Ì‘Ò‚¿ƒ^ƒXƒN */
376#define TA_CLR UINT_C(0x04) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃NƒŠƒAŽw’è */
377
378#define TA_STA UINT_C(0x02) /* ŽüŠúƒnƒ“ƒhƒ‰‚𓮍ìó‘ԂŐ¶¬ */
379
380#define TA_NONKERNEL UINT_C(0x02) /* ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý */
381
382#define TA_ENAINT UINT_C(0x01) /* Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚ðƒNƒŠƒA */
383#define TA_EDGE UINT_C(0x02) /* ƒGƒbƒWƒgƒŠƒK */
384
385/*
386 * ƒT[ƒrƒXƒR[ƒ‹‚Ì“®ìƒ‚[ƒh‚Ì’è‹`
387 */
388#define TWF_ORW UINT_C(0x01) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌOR‘Ò‚¿ */
389#define TWF_ANDW UINT_C(0x02) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌAND‘Ò‚¿ */
390
391/*
392 * ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚Ì’è‹`
393 */
394#define TTS_RUN UINT_C(0x01) /* ŽÀsó‘Ô */
395#define TTS_RDY UINT_C(0x02) /* ŽÀs‰Â”\ó‘Ô */
396#define TTS_WAI UINT_C(0x04) /* ‘Ò‚¿ó‘Ô */
397#define TTS_SUS UINT_C(0x08) /* ‹­§‘Ò‚¿ó‘Ô */
398#define TTS_WAS UINT_C(0x0c) /* “ñd‘Ò‚¿ó‘Ô */
399#define TTS_DMT UINT_C(0x10) /* ‹xŽ~ó‘Ô */
400
401#define TTW_SLP UINT_C(0x0001) /* ‹N°‘Ò‚¿ */
402#define TTW_DLY UINT_C(0x0002) /* ŽžŠÔŒo‰ß‘Ò‚¿ */
403#define TTW_SEM UINT_C(0x0004) /* ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹Šl“¾‘Ò‚¿ */
404#define TTW_FLG UINT_C(0x0008) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿ */
405#define TTW_SDTQ UINT_C(0x0010) /* ƒf[ƒ^ƒLƒ…
406[‚Ö‚Ì‘—M‘Ò‚¿ */
407#define TTW_RDTQ UINT_C(0x0020) /* ƒf[ƒ^ƒLƒ…
408[‚©‚ç‚ÌŽóM‘Ò‚¿ */
409#define TTW_SPDQ UINT_C(0x0100) /* —Dæ“xƒf[ƒ^ƒLƒ…
410[‚Ö‚Ì‘—M‘Ò‚¿ */
411#define TTW_RPDQ UINT_C(0x0200) /* —Dæ“xƒf[ƒ^ƒLƒ…
412[‚©‚ç‚ÌŽóM‘Ò‚¿ */
413#define TTW_MBX UINT_C(0x0040) /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóM‘Ò‚¿ */
414#define TTW_MPF UINT_C(0x2000) /* ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾‘Ò‚¿ */
415
416#define TTEX_ENA UINT_C(0x01) /* ƒ^ƒXƒN—áŠOˆ—‹–‰Âó‘Ô */
417#define TTEX_DIS UINT_C(0x02) /* ƒ^ƒXƒN—áŠOˆ—‹ÖŽ~ó‘Ô */
418
419#define TCYC_STP UINT_C(0x01) /* ŽüŠúƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚È‚¢ */
420#define TCYC_STA UINT_C(0x02) /* ŽüŠúƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚é */
421
422#define TALM_STP UINT_C(0x01) /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚È‚¢ */
423#define TALM_STA UINT_C(0x02) /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚é */
424
425/*
426 * ‚»‚Ì‘¼‚̒萔‚Ì’è‹`
427 */
428#define TSK_SELF 0 /* Ž©ƒ^ƒXƒNŽw’è */
429#define TSK_NONE 0 /* ŠY“–‚·‚éƒ^ƒXƒN‚ª‚È‚¢ */
430
431#define TPRI_SELF 0 /* Ž©ƒ^ƒXƒN‚̃x[ƒX—Dæ“x */
432#define TPRI_INI 0 /* ƒ^ƒXƒN‚Ì‹N“®Žž—Dæ“x */
433
434#define TIPM_ENAALL 0 /* Š„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœ */
435
436/*
437 * \¬’萔‚ƃ}ƒNƒ
438 */
439
440/*
441 * ƒTƒ|[ƒg‚·‚é‹@”\
442 */
443#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
444#define TOPPERS_SUPPORT_DIS_INT /* dis_int‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é */
445#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
446
447#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
448#define TOPPERS_SUPPORT_ENA_INT /* ena_int‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é */
449#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
450
451#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
452#define TOPPERS_SUPPORT_GET_UTM /* get_utm‚ªƒTƒ|[ƒg‚³‚ê‚Ä‚¢‚é */
453#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
454
455#define TOPPERS_SUPPORT_RSTR_TASK /* §–ñƒ^ƒXƒN‹@”\Šg’£ */
456
457/*
458 * —Dæ“x‚͈̔Í
459 */
460#define TMIN_TPRI 1 /* ƒ^ƒXƒN—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
461#define TMAX_TPRI 16 /* ƒ^ƒXƒN—Dæ“x‚̍őå’liÅ’á’lj*/
462#define TMIN_DPRI 1 /* ƒf[ƒ^—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
463#define TMAX_DPRI 16 /* ƒf[ƒ^—Dæ“x‚̍őå’liÅ’á’lj*/
464#define TMIN_MPRI 1 /* ƒƒbƒZ[ƒW—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
465#define TMAX_MPRI 16 /* ƒƒbƒZ[ƒW—Dæ“x‚̍őå’liÅ’á’lj*/
466#define TMIN_ISRPRI 1 /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̍ŏ¬’l */
467#define TMAX_ISRPRI 16 /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̍őå’l */
468
469/*
470 * ƒo[ƒWƒ‡ƒ“î•ñ
471 */
472#define TKERNEL_MAKER UINT_C(0x0118) /* ƒJ[ƒlƒ‹‚̃[ƒJ[ƒR[ƒh */
473#define TKERNEL_PRID UINT_C(0x0007) /* ƒJ[ƒlƒ‹‚ÌŽ¯•Ê”ԍ† */
474#define TKERNEL_SPVER UINT_C(0xf513) /* ƒJ[ƒlƒ‹Žd—l‚̃o[ƒWƒ‡ƒ“”ԍ† */
475#define TKERNEL_PRVER UINT_C(0x1070) /* ƒJ[ƒlƒ‹‚̃o[ƒWƒ‡ƒ“”ԍ† */
476
477/*
478 * ƒLƒ…
479[ƒCƒ“ƒO‰ñ”‚̍őå’l
480 */
481#define TMAX_ACTCNT UINT_C(1) /* ‹N“®—v‹ƒLƒ…
482[ƒCƒ“ƒO”‚̍őå’l */
483#define TMAX_WUPCNT UINT_C(1) /* ‹N°—v‹ƒLƒ…
484[ƒCƒ“ƒO”‚̍őå’l */
485
486/*
487 * ƒrƒbƒgƒpƒ^[ƒ“‚̃rƒbƒg”
488 */
489#ifndef TBIT_TEXPTN /* ƒ^ƒXƒN—áŠO—vˆö‚̃rƒbƒg” */
490#define TBIT_TEXPTN (sizeof(TEXPTN) * CHAR_BIT)
491#endif /* TBIT_TEXPTN */
492
493#ifndef TBIT_FLGPTN /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃rƒbƒg” */
494#define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT)
495#endif /* TBIT_FLGPTN */
496
497/*
498 * ƒƒ‚ƒŠ—̈æŠm•Û‚Ì‚½‚߂̃}ƒNƒ
499 *
500 * ˆÈ‰º‚ÌTOPPERS_COUNT_SZ‚ÆTOPPERS_ROUND_SZ‚Ì’è‹`‚́Cunit‚ª2‚̋Џæ‚Å‚ 
501 * ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD
502 */
503#ifndef TOPPERS_COUNT_SZ
504#define TOPPERS_COUNT_SZ(sz, unit) (((sz) + (unit) - 1) / (unit))
505#endif /* TOPPERS_COUNT_SZ */
506#ifndef TOPPERS_ROUND_SZ
507#define TOPPERS_ROUND_SZ(sz, unit) (((sz) + (unit) - 1) & ~((unit) - 1))
508#endif /* TOPPERS_ROUND_SZ */
509
510#define COUNT_STK_T(sz) TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
511#define ROUND_STK_T(sz) TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
512
513#define COUNT_MPF_T(blksz) TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
514#define ROUND_MPF_T(blksz) TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
515
516/*
517 * ‚»‚Ì‘¼‚̍\¬’萔
518 */
519#define TMAX_MAXSEM UINT_MAX /* ƒZƒ}ƒtƒH‚̍ő厑Œ¹”‚̍őå’l */
520
521#ifdef __cplusplus
522}
523#endif
524
525#endif /* TOPPERS_KERNEL_H */
Note: See TracBrowser for help on using the repository browser.