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