source: asp_ewarm/asp-1.7.0/extension/mutex/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.3 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_rmtx {
191 ID htskid; /* ƒ~ƒ…
192[ƒeƒbƒNƒX‚ðƒƒbƒN‚µ‚Ä‚¢‚éƒ^ƒXƒN‚ÌID”ԍ† */
193 ID wtskid; /* ƒ~ƒ…
194[ƒeƒbƒNƒX‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚ÌID”ԍ† */
195} T_RMTX;
196
197typedef struct t_rmpf {
198 ID wtskid; /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚Ì‘Ò‚¿s—ñ‚̐擪‚̃^ƒXƒN‚Ì
199 ID”ԍ† */
200 uint_t fblkcnt; /* ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ‚̋󂫃ƒ‚ƒŠ—̈æ‚ÉŠ„‚è
201 •t‚¯‚邱‚Æ‚ª‚Å‚«‚éŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚̐” */
202} T_RMPF;
203
204typedef struct t_rcyc {
205 STAT cycstat; /* ŽüŠúƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
206 RELTIM lefttim; /* ŽŸ‚ÉŽüŠúƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞‚Ü‚Å‚Ì‘Š‘ÎŽžŠÔ */
207} T_RCYC;
208
209typedef struct t_ralm {
210 STAT almstat; /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚Ì“®ìó‘Ô */
211 RELTIM lefttim; /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ð‹N“®‚·‚鎞‚Ü‚Å‚Ì‘Š‘ÎŽžŠÔ */
212} T_RALM;
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
309extern ER loc_mtx(ID mtxid) throw();
310extern ER ploc_mtx(ID mtxid) throw();
311extern ER tloc_mtx(ID mtxid, TMO tmout) throw();
312extern ER unl_mtx(ID mtxid) throw();
313extern ER ini_mtx(ID mtxid) throw();
314extern ER ref_mtx(ID mtxid, T_RMTX *pk_rmtx) throw();
315
316/*
317 * ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—‹@”\
318 */
319extern ER get_mpf(ID mpfid, void **p_blk) throw();
320extern ER pget_mpf(ID mpfid, void **p_blk) throw();
321extern ER tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
322extern ER rel_mpf(ID mpfid, void *blk) throw();
323extern ER ini_mpf(ID mpfid) throw();
324extern ER ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
325
326/*
327 * ŽžŠÔŠÇ—‹@”\
328 */
329extern ER get_tim(SYSTIM *p_systim) throw();
330extern ER get_utm(SYSUTM *p_sysutm) throw();
331
332extern ER sta_cyc(ID cycid) throw();
333extern ER stp_cyc(ID cycid) throw();
334extern ER ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
335
336extern ER sta_alm(ID almid, RELTIM almtim) throw();
337extern ER ista_alm(ID almid, RELTIM almtim) throw();
338extern ER stp_alm(ID almid) throw();
339extern ER istp_alm(ID almid) throw();
340extern ER ref_alm(ID almid, T_RALM *pk_ralm) throw();
341
342/*
343 * ƒVƒXƒeƒ€ó‘ÔŠÇ—‹@”\
344 */
345extern ER rot_rdq(PRI tskpri) throw();
346extern ER irot_rdq(PRI tskpri) throw();
347extern ER get_tid(ID *p_tskid) throw();
348extern ER iget_tid(ID *p_tskid) throw();
349extern ER loc_cpu(void) throw();
350extern ER iloc_cpu(void) throw();
351extern ER unl_cpu(void) throw();
352extern ER iunl_cpu(void) throw();
353extern ER dis_dsp(void) throw();
354extern ER ena_dsp(void) throw();
355extern bool_t sns_ctx(void) throw();
356extern bool_t sns_loc(void) throw();
357extern bool_t sns_dsp(void) throw();
358extern bool_t sns_dpn(void) throw();
359extern bool_t sns_ker(void) throw();
360extern ER ext_ker(void) throw();
361
362/*
363 * Š„ž‚ÝŠÇ—‹@”\
364 */
365extern ER dis_int(INTNO intno) throw();
366extern ER ena_int(INTNO intno) throw();
367extern ER chg_ipm(PRI intpri) throw();
368extern ER get_ipm(PRI *p_intpri) throw();
369
370/*
371 * CPU—áŠOŠÇ—‹@”\
372 */
373extern bool_t xsns_dpn(void *p_excinf) throw();
374extern bool_t xsns_xpn(void *p_excinf) throw();
375
376#endif /* TOPPERS_MACRO_ONLY */
377
378/*
379 * ƒIƒuƒWƒFƒNƒg‘®«‚Ì’è‹`
380 */
381#define TA_ACT UINT_C(0x02) /* ƒ^ƒXƒN‚ð‹N“®‚³‚ꂽó‘ԂŐ¶¬ */
382
383#define TA_TPRI UINT_C(0x01) /* ƒ^ƒXƒN‚Ì‘Ò‚¿s—ñ‚ð—Dæ“x‡‚É */
384#define TA_MPRI UINT_C(0x02) /* ƒƒbƒZ[ƒWƒLƒ…
385[‚ð—Dæ“x‡‚É */
386
387#define TA_WMUL UINT_C(0x02) /* •¡”‚Ì‘Ò‚¿ƒ^ƒXƒN */
388#define TA_CLR UINT_C(0x04) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃NƒŠƒAŽw’è */
389
390#define TA_CEILING UINT_C(0x03) /* —Dæ“xãŒÀƒvƒƒgƒRƒ‹ */
391
392#define TA_STA UINT_C(0x02) /* ŽüŠúƒnƒ“ƒhƒ‰‚𓮍ìó‘ԂŐ¶¬ */
393
394#define TA_NONKERNEL UINT_C(0x02) /* ƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý */
395
396#define TA_ENAINT UINT_C(0x01) /* Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚ðƒNƒŠƒA */
397#define TA_EDGE UINT_C(0x02) /* ƒGƒbƒWƒgƒŠƒK */
398
399/*
400 * ƒT[ƒrƒXƒR[ƒ‹‚Ì“®ìƒ‚[ƒh‚Ì’è‹`
401 */
402#define TWF_ORW UINT_C(0x01) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌOR‘Ò‚¿ */
403#define TWF_ANDW UINT_C(0x02) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚ÌAND‘Ò‚¿ */
404
405/*
406 * ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô‚Ì’è‹`
407 */
408#define TTS_RUN UINT_C(0x01) /* ŽÀsó‘Ô */
409#define TTS_RDY UINT_C(0x02) /* ŽÀs‰Â”\ó‘Ô */
410#define TTS_WAI UINT_C(0x04) /* ‘Ò‚¿ó‘Ô */
411#define TTS_SUS UINT_C(0x08) /* ‹­§‘Ò‚¿ó‘Ô */
412#define TTS_WAS UINT_C(0x0c) /* “ñd‘Ò‚¿ó‘Ô */
413#define TTS_DMT UINT_C(0x10) /* ‹xŽ~ó‘Ô */
414
415#define TTW_SLP UINT_C(0x0001) /* ‹N°‘Ò‚¿ */
416#define TTW_DLY UINT_C(0x0002) /* ŽžŠÔŒo‰ß‘Ò‚¿ */
417#define TTW_SEM UINT_C(0x0004) /* ƒZƒ}ƒtƒH‚ÌŽ‘Œ¹Šl“¾‘Ò‚¿ */
418#define TTW_FLG UINT_C(0x0008) /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‘Ò‚¿ */
419#define TTW_SDTQ UINT_C(0x0010) /* ƒf[ƒ^ƒLƒ…
420[‚Ö‚Ì‘—M‘Ò‚¿ */
421#define TTW_RDTQ UINT_C(0x0020) /* ƒf[ƒ^ƒLƒ…
422[‚©‚ç‚ÌŽóM‘Ò‚¿ */
423#define TTW_SPDQ UINT_C(0x0100) /* —Dæ“xƒf[ƒ^ƒLƒ…
424[‚Ö‚Ì‘—M‘Ò‚¿ */
425#define TTW_RPDQ UINT_C(0x0200) /* —Dæ“xƒf[ƒ^ƒLƒ…
426[‚©‚ç‚ÌŽóM‘Ò‚¿ */
427#define TTW_MBX UINT_C(0x0040) /* ƒ[ƒ‹ƒ{ƒbƒNƒX‚©‚ç‚ÌŽóM‘Ò‚¿ */
428#define TTW_MPF UINT_C(0x2000) /* ŒÅ’è’·ƒƒ‚ƒŠƒuƒƒbƒN‚ÌŠl“¾‘Ò‚¿ */
429
430#define TTEX_ENA UINT_C(0x01) /* ƒ^ƒXƒN—áŠOˆ—‹–‰Âó‘Ô */
431#define TTEX_DIS UINT_C(0x02) /* ƒ^ƒXƒN—áŠOˆ—‹ÖŽ~ó‘Ô */
432
433#define TCYC_STP UINT_C(0x01) /* ŽüŠúƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚È‚¢ */
434#define TCYC_STA UINT_C(0x02) /* ŽüŠúƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚é */
435
436#define TALM_STP UINT_C(0x01) /* ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚ª“®ì‚µ‚Ä‚¢‚È‚¢ */
437#define TALM_STA UINT_C(0x02) /* ƒAƒ‰[ƒ€ƒ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#define TOPPERS_SUPPORT_MUTEX /* ƒ~ƒ…
470[ƒeƒbƒNƒX‹@”\Šg’£ */
471
472/*
473 * —Dæ“x‚͈̔Í
474 */
475#define TMIN_TPRI 1 /* ƒ^ƒXƒN—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
476#define TMAX_TPRI 16 /* ƒ^ƒXƒN—Dæ“x‚̍őå’liÅ’á’lj*/
477#define TMIN_DPRI 1 /* ƒf[ƒ^—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
478#define TMAX_DPRI 16 /* ƒf[ƒ^—Dæ“x‚̍őå’liÅ’á’lj*/
479#define TMIN_MPRI 1 /* ƒƒbƒZ[ƒW—Dæ“x‚̍ŏ¬’liÅ‚’lj*/
480#define TMAX_MPRI 16 /* ƒƒbƒZ[ƒW—Dæ“x‚̍őå’liÅ’á’lj*/
481#define TMIN_ISRPRI 1 /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̍ŏ¬’l */
482#define TMAX_ISRPRI 16 /* Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—Dæ“x‚̍őå’l */
483
484/*
485 * ƒo[ƒWƒ‡ƒ“î•ñ
486 */
487#define TKERNEL_MAKER UINT_C(0x0118) /* ƒJ[ƒlƒ‹‚̃[ƒJ[ƒR[ƒh */
488#define TKERNEL_PRID UINT_C(0x0007) /* ƒJ[ƒlƒ‹‚ÌŽ¯•Ê”ԍ† */
489#define TKERNEL_SPVER UINT_C(0xf513) /* ƒJ[ƒlƒ‹Žd—l‚̃o[ƒWƒ‡ƒ“”ԍ† */
490#define TKERNEL_PRVER UINT_C(0x1070) /* ƒJ[ƒlƒ‹‚̃o[ƒWƒ‡ƒ“”ԍ† */
491
492/*
493 * ƒLƒ…
494[ƒCƒ“ƒO‰ñ”‚̍őå’l
495 */
496#define TMAX_ACTCNT UINT_C(1) /* ‹N“®—v‹ƒLƒ…
497[ƒCƒ“ƒO”‚̍őå’l */
498#define TMAX_WUPCNT UINT_C(1) /* ‹N°—v‹ƒLƒ…
499[ƒCƒ“ƒO”‚̍őå’l */
500
501/*
502 * ƒrƒbƒgƒpƒ^[ƒ“‚̃rƒbƒg”
503 */
504#ifndef TBIT_TEXPTN /* ƒ^ƒXƒN—áŠO—vˆö‚̃rƒbƒg” */
505#define TBIT_TEXPTN (sizeof(TEXPTN) * CHAR_BIT)
506#endif /* TBIT_TEXPTN */
507
508#ifndef TBIT_FLGPTN /* ƒCƒxƒ“ƒgƒtƒ‰ƒO‚̃rƒbƒg” */
509#define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT)
510#endif /* TBIT_FLGPTN */
511
512/*
513 * ƒƒ‚ƒŠ—̈æŠm•Û‚Ì‚½‚߂̃}ƒNƒ
514 *
515 * ˆÈ‰º‚ÌTOPPERS_COUNT_SZ‚ÆTOPPERS_ROUND_SZ‚Ì’è‹`‚́Cunit‚ª2‚̋Џæ‚Å‚ 
516 * ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD
517 */
518#ifndef TOPPERS_COUNT_SZ
519#define TOPPERS_COUNT_SZ(sz, unit) (((sz) + (unit) - 1) / (unit))
520#endif /* TOPPERS_COUNT_SZ */
521#ifndef TOPPERS_ROUND_SZ
522#define TOPPERS_ROUND_SZ(sz, unit) (((sz) + (unit) - 1) & ~((unit) - 1))
523#endif /* TOPPERS_ROUND_SZ */
524
525#define COUNT_STK_T(sz) TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
526#define ROUND_STK_T(sz) TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
527
528#define COUNT_MPF_T(blksz) TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
529#define ROUND_MPF_T(blksz) TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
530
531/*
532 * ‚»‚Ì‘¼‚̍\¬’萔
533 */
534#define TMAX_MAXSEM UINT_MAX /* ƒZƒ}ƒtƒH‚̍ő厑Œ¹”‚̍őå’l */
535
536#ifdef __cplusplus
537}
538#endif
539
540#endif /* TOPPERS_KERNEL_H */
Note: See TracBrowser for help on using the repository browser.