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-2014 by Embedded and Real-Time Systems Laboratory
|
---|
9 | * Graduate School of Information Science, Nagoya Univ., JAPAN
|
---|
10 | *
|
---|
11 | * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF
|
---|
12 | * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü
|
---|
13 | * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD
|
---|
14 | * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì
|
---|
15 | * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[
|
---|
16 | * XR[hÉÜÜêĢ鱯D
|
---|
17 | * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg
|
---|
18 | * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL
|
---|
19 | gip
|
---|
20 | * Ò}j
|
---|
21 | AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL
|
---|
22 | * Ì³ÛØKèðfÚ·é±ÆD
|
---|
23 | * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg
|
---|
24 | * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·±
|
---|
25 | * ÆD
|
---|
26 | * (a) Äzzɺ¤hL
|
---|
27 | gipÒ}j
|
---|
28 | AÈÇjÉCãLÌ
|
---|
29 | * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD
|
---|
30 | * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ
|
---|
31 | * ñ·é±ÆD
|
---|
32 | * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹
|
---|
33 | * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD
|
---|
34 | * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé
|
---|
35 | * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð
|
---|
36 | * ÆÓ·é±ÆD
|
---|
37 | *
|
---|
38 | * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨
|
---|
39 | * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI
|
---|
40 | * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF
|
---|
41 | * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»
|
---|
42 | * ÌÓCðíÈ¢D
|
---|
43 | *
|
---|
44 | * @(#) $Id: kernel.h 164 2016-03-07 11:33:50Z coas-nagasima $
|
---|
45 | */
|
---|
46 |
|
---|
47 | /*
|
---|
48 | * TOPPERS/ASPJ[l Wwb_t@C
|
---|
49 | *
|
---|
50 | * TOPPERS/ASPJ[lªT|[g·éT[rXR[Ì龯CKvÈf[
|
---|
51 | * ^^CèC}NÌè`ðÜÞwb_t@CD
|
---|
52 | *
|
---|
53 | * AZu¾êÌ\[Xt@C©ç±Ìt@CðCN[h·é
|
---|
54 | * ÍCTOPPERS_MACRO_ONLYðè`µÄ¨D±êÉæèC}Nè`ÈOð
|
---|
55 | * æ¤ÉÈÁÄ¢éD
|
---|
56 | *
|
---|
57 | * ±Ìt@CðCN[h·éOÉCN[hµÄ¨×«t@C
|
---|
58 | * ÍÈ¢D
|
---|
59 | */
|
---|
60 |
|
---|
61 | #ifndef TOPPERS_KERNEL_H
|
---|
62 | #define TOPPERS_KERNEL_H
|
---|
63 |
|
---|
64 | #ifdef __cplusplus
|
---|
65 | extern "C" {
|
---|
66 | #endif
|
---|
67 |
|
---|
68 | /*
|
---|
69 | * TOPPERS¤ÊÌf[^^EèE}N
|
---|
70 | */
|
---|
71 | #include <t_stddef.h>
|
---|
72 |
|
---|
73 | /*
|
---|
74 | * ^[Qbg˶
|
---|
75 | */
|
---|
76 | #include "target_kernel.h"
|
---|
77 |
|
---|
78 | #ifndef TOPPERS_MACRO_ONLY
|
---|
79 |
|
---|
80 | /*
|
---|
81 | * f[^^Ìè`
|
---|
82 | */
|
---|
83 |
|
---|
84 | /*
|
---|
85 | * rbgp^[âIuWFNgÔÌ^è`
|
---|
86 | */
|
---|
87 | typedef uint_t TEXPTN; /* ^XNáOvöÌrbgp^[ */
|
---|
88 | typedef uint_t FLGPTN; /* CxgtOÌrbgp^[ */
|
---|
89 | typedef uint_t INTNO; /* ÝÔ */
|
---|
90 | typedef uint_t INHNO; /* ÝnhÔ */
|
---|
91 | typedef uint_t EXCNO; /* CPUáOnhÔ */
|
---|
92 |
|
---|
93 | /*
|
---|
94 | * PÊÌ^è`
|
---|
95 | */
|
---|
96 | typedef void (*TASK)(intptr_t exinf);
|
---|
97 | typedef void (*TEXRTN)(TEXPTN texptn, intptr_t exinf);
|
---|
98 | typedef void (*CYCHDR)(intptr_t exinf);
|
---|
99 | typedef void (*ALMHDR)(intptr_t exinf);
|
---|
100 | typedef void (*ISR)(intptr_t exinf);
|
---|
101 | typedef void (*INTHDR)(void);
|
---|
102 | typedef void (*EXCHDR)(void *p_excinf);
|
---|
103 | typedef void (*INIRTN)(intptr_t exinf);
|
---|
104 | typedef 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 */
|
---|
112 | typedef TOPPERS_STK_T STK_T; /* X^bNÌæðmÛ·é½ßÌ^ */
|
---|
113 |
|
---|
114 | #ifndef TOPPERS_MPF_T
|
---|
115 | #define TOPPERS_MPF_T intptr_t
|
---|
116 | #endif /* TOPPERS_MPF_T */
|
---|
117 | typedef TOPPERS_MPF_T MPF_T; /* Åè·v[ÌæðmÛ·é½ßÌ^ */
|
---|
118 |
|
---|
119 | /*
|
---|
120 | * bZ[Wwb_Ì^è`
|
---|
121 | */
|
---|
122 | typedef struct t_msg { /* [{bNXÌbZ[Wwb_ */
|
---|
123 | struct t_msg *pk_next;
|
---|
124 | } T_MSG;
|
---|
125 |
|
---|
126 | typedef struct t_msg_pri { /* Dæxt«bZ[Wwb_ */
|
---|
127 | T_MSG msgque; /* bZ[Wwb_ */
|
---|
128 | PRI msgpri; /* bZ[WDæx */
|
---|
129 | } T_MSG_PRI;
|
---|
130 |
|
---|
131 | /*
|
---|
132 | * pPbg`®Ìè`
|
---|
133 | */
|
---|
134 | typedef struct t_ctsk {
|
---|
135 | ATR tskatr; /* ^XN®« */
|
---|
136 | intptr_t exinf; /* ^XNÌg£îñ */
|
---|
137 | TASK task; /* ^XNÌC[`ÌæªÔn */
|
---|
138 | PRI itskpri; /* ^XNÌN®Dæx */
|
---|
139 | SIZE stksz; /* ^XNÌX^bNÌæÌTCY */
|
---|
140 | STK_T *stk; /* ^XNÌX^bNÌæÌæªÔn */
|
---|
141 | } T_CTSK;
|
---|
142 |
|
---|
143 | typedef struct t_rtsk {
|
---|
144 | STAT tskstat; /* ^XNóÔ */
|
---|
145 | PRI tskpri; /* ^XNÌ»ÝDæx */
|
---|
146 | PRI tskbpri; /* ^XNÌx[XDæx */
|
---|
147 | STAT tskwait; /* Ò¿vö */
|
---|
148 | ID wobjid; /* Ò¿ÎÛÌIuWFNgÌID */
|
---|
149 | TMO lefttmo; /* ^CAEg·éÜÅÌÔ */
|
---|
150 | uint_t actcnt; /* N®vL
|
---|
151 | [CO */
|
---|
152 | uint_t wupcnt; /* N°vL
|
---|
153 | [CO */
|
---|
154 | } T_RTSK;
|
---|
155 |
|
---|
156 | typedef struct t_dtex {
|
---|
157 | ATR texatr; /* ^XNáO[`®« */
|
---|
158 | TEXRTN texrtn; /* ^XNáO[`ÌæªÔn */
|
---|
159 | } T_DTEX;
|
---|
160 |
|
---|
161 | typedef struct t_rtex {
|
---|
162 | STAT texstat; /* ^XNáOÌóÔ */
|
---|
163 | TEXPTN pndptn; /* Û¯áOvö */
|
---|
164 | } T_RTEX;
|
---|
165 |
|
---|
166 | typedef struct t_csem {
|
---|
167 | ATR sematr; /* Z}tH®« */
|
---|
168 | uint_t isemcnt; /* Z}tHÌú¹ */
|
---|
169 | uint_t maxsem; /* Z}tHÌÅå¹ */
|
---|
170 | } T_CSEM;
|
---|
171 |
|
---|
172 | typedef struct t_rsem {
|
---|
173 | ID wtskid; /* Z}tHÌÒ¿sñÌæªÌ^XNÌIDÔ */
|
---|
174 | uint_t semcnt; /* Z}tHÌ»Ý̹ */
|
---|
175 | } T_RSEM;
|
---|
176 |
|
---|
177 | typedef struct t_cflg {
|
---|
178 | ATR flgatr; /* CxgtO®« */
|
---|
179 | FLGPTN iflgptn; /* CxgtOÌúrbgp^[ */
|
---|
180 | } T_CFLG;
|
---|
181 |
|
---|
182 | typedef struct t_rflg {
|
---|
183 | ID wtskid; /* CxgtOÌÒ¿sñÌæªÌ^XNÌIDÔ */
|
---|
184 | FLGPTN flgptn; /* CxgtOÌ»ÝÌrbgp^[ */
|
---|
185 | } T_RFLG;
|
---|
186 |
|
---|
187 | typedef struct t_cdtq {
|
---|
188 | ATR dtqatr; /* f[^L
|
---|
189 | [®« */
|
---|
190 | uint_t dtqcnt; /* f[^L
|
---|
191 | [ÇÌæÉi[Å«éf[^ */
|
---|
192 | void *dtqmb; /* f[^L
|
---|
193 | [ÇÌæÌæªÔn */
|
---|
194 | } T_CDTQ;
|
---|
195 |
|
---|
196 | typedef struct t_rdtq {
|
---|
197 | ID stskid; /* f[^L
|
---|
198 | [ÌMÒ¿sñÌæªÌ^XNÌIDÔ */
|
---|
199 | ID rtskid; /* f[^L
|
---|
200 | [ÌóMÒ¿sñÌæªÌ^XNÌIDÔ */
|
---|
201 | uint_t sdtqcnt; /* f[^L
|
---|
202 | [ÇÌæÉi[³êÄ¢éf[^Ì */
|
---|
203 | } T_RDTQ;
|
---|
204 |
|
---|
205 | typedef struct t_cpdq {
|
---|
206 | ATR pdqatr; /* Dæxf[^L
|
---|
207 | [®« */
|
---|
208 | uint_t pdqcnt; /* Dæxf[^L
|
---|
209 | [ÇÌæÉi[Å«éf[^ */
|
---|
210 | PRI maxdpri; /* Dæxf[^L
|
---|
211 | [ÉMÅ«éf[^DæxÌÅ
|
---|
212 | ål */
|
---|
213 | void *pdqmb; /* Dæxf[^L
|
---|
214 | [ÇÌæÌæªÔn */
|
---|
215 | } T_CPDQ;
|
---|
216 |
|
---|
217 | typedef struct t_rpdq {
|
---|
218 | ID stskid; /* Dæxf[^L
|
---|
219 | [ÌMÒ¿sñÌæªÌ^XN
|
---|
220 | ÌIDÔ */
|
---|
221 | ID rtskid; /* Dæxf[^L
|
---|
222 | [ÌóMÒ¿sñÌæªÌ^XN
|
---|
223 | ÌIDÔ */
|
---|
224 | uint_t spdqcnt; /* Dæxf[^L
|
---|
225 | [ÇÌæÉi[³êÄ¢éf[
|
---|
226 | ^Ì */
|
---|
227 | } T_RPDQ;
|
---|
228 |
|
---|
229 | typedef struct t_cmbx {
|
---|
230 | ATR mbxatr; /* [{bNX®« */
|
---|
231 | PRI maxmpri; /* Dæx[{bNXÉMÅ«ébZ[WDæ
|
---|
232 | xÌÅål */
|
---|
233 | void *mprihd; /* DæxÊÌbZ[WL
|
---|
234 | [wb_ÌæÌæªÔn */
|
---|
235 | } T_CMBX;
|
---|
236 |
|
---|
237 | typedef struct t_rmbx {
|
---|
238 | ID wtskid; /* [{bNXÌÒ¿sñÌæªÌ^XNÌIDÔ */
|
---|
239 | T_MSG *pk_msg; /* bZ[WL
|
---|
240 | [ÌæªÉÂȪê½bZ[W
|
---|
241 | ÌæªÔn */
|
---|
242 | } T_RMBX;
|
---|
243 |
|
---|
244 | typedef struct t_cmpf {
|
---|
245 | ATR mpfatr; /* Åè·v[®« */
|
---|
246 | uint_t blkcnt; /* l¾Å«éÅè·ubNÌ */
|
---|
247 | uint_t blksz; /* Åè·ubNÌTCY */
|
---|
248 | MPF_T *mpf; /* Åè·v[ÌæÌæªÔn */
|
---|
249 | void *mpfmb; /* Åè·v[ÇÌæÌæªÔn */
|
---|
250 | } T_CMPF;
|
---|
251 |
|
---|
252 | typedef struct t_rmpf {
|
---|
253 | ID wtskid; /* Åè·v[ÌÒ¿sñÌæªÌ^XNÌ
|
---|
254 | IDÔ */
|
---|
255 | uint_t fblkcnt; /* Åè·v[ÌæÌó«ÌæÉè
|
---|
256 | t¯é±ÆªÅ«éÅè·ubNÌ */
|
---|
257 | } T_RMPF;
|
---|
258 |
|
---|
259 | typedef struct t_ccyc {
|
---|
260 | ATR cycatr; /* üúnh®« */
|
---|
261 | intptr_t exinf; /* üúnhÌg£îñ */
|
---|
262 | CYCHDR cychdr; /* üúnhÌæªÔn */
|
---|
263 | RELTIM cyctim; /* üúnhÌN®üú */
|
---|
264 | RELTIM cycphs; /* üúnhÌN®Ê */
|
---|
265 | } T_CCYC;
|
---|
266 |
|
---|
267 | typedef struct t_rcyc {
|
---|
268 | STAT cycstat; /* üúnhÌ®ìóÔ */
|
---|
269 | RELTIM lefttim; /* ÉüúnhðN®·éÜÅÌÎÔ */
|
---|
270 | } T_RCYC;
|
---|
271 |
|
---|
272 | typedef struct t_calm {
|
---|
273 | ATR almatr; /* A[nh®« */
|
---|
274 | intptr_t exinf; /* A[nhÌg£îñ */
|
---|
275 | ALMHDR almhdr; /* A[nhÌæªÔn */
|
---|
276 | } T_CALM;
|
---|
277 |
|
---|
278 | typedef struct t_ralm {
|
---|
279 | STAT almstat; /* A[nhÌ®ìóÔ */
|
---|
280 | RELTIM lefttim; /* A[nhðN®·éÜÅÌÎÔ */
|
---|
281 | } T_RALM;
|
---|
282 |
|
---|
283 | typedef struct t_cisr {
|
---|
284 | ATR isratr; /* ÝT[rX[`®« */
|
---|
285 | intptr_t exinf; /* ÝT[rX[`Ìg£îñ */
|
---|
286 | INTNO intno; /* ÝT[rX[`ðo^·éÝÔ */
|
---|
287 | ISR isr; /* ÝT[rX[`ÌæªÔn */
|
---|
288 | PRI isrpri; /* ÝT[rX[`Dæx */
|
---|
289 | } T_CISR;
|
---|
290 |
|
---|
291 | /*
|
---|
292 | * T[rXR[Ìé¾
|
---|
293 | */
|
---|
294 |
|
---|
295 | /*
|
---|
296 | * ^XNÇ@\
|
---|
297 | */
|
---|
298 | extern ER_UINT acre_tsk(const T_CTSK *pk_ctsk) throw();
|
---|
299 | extern ER del_tsk(ID tskid) throw();
|
---|
300 | extern ER act_tsk(ID tskid) throw();
|
---|
301 | extern ER iact_tsk(ID tskid) throw();
|
---|
302 | extern ER_UINT can_act(ID tskid) throw();
|
---|
303 | extern ER ext_tsk(void) throw();
|
---|
304 | extern ER ter_tsk(ID tskid) throw();
|
---|
305 | extern ER chg_pri(ID tskid, PRI tskpri) throw();
|
---|
306 | extern ER get_pri(ID tskid, PRI *p_tskpri) throw();
|
---|
307 | extern ER get_inf(intptr_t *p_exinf) throw();
|
---|
308 | extern ER ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
|
---|
309 |
|
---|
310 | /*
|
---|
311 | * ^XNt®¯ú@\
|
---|
312 | */
|
---|
313 | extern ER slp_tsk(void) throw();
|
---|
314 | extern ER tslp_tsk(TMO tmout) throw();
|
---|
315 | extern ER wup_tsk(ID tskid) throw();
|
---|
316 | extern ER iwup_tsk(ID tskid) throw();
|
---|
317 | extern ER_UINT can_wup(ID tskid) throw();
|
---|
318 | extern ER rel_wai(ID tskid) throw();
|
---|
319 | extern ER irel_wai(ID tskid) throw();
|
---|
320 | extern ER sus_tsk(ID tskid) throw();
|
---|
321 | extern ER rsm_tsk(ID tskid) throw();
|
---|
322 | extern ER dly_tsk(RELTIM dlytim) throw();
|
---|
323 |
|
---|
324 | /*
|
---|
325 | * ^XNáO@\
|
---|
326 | */
|
---|
327 | extern ER def_tex(ID tskid, const T_DTEX *pk_dtex) throw();
|
---|
328 | extern ER ras_tex(ID tskid, TEXPTN rasptn) throw();
|
---|
329 | extern ER iras_tex(ID tskid, TEXPTN rasptn) throw();
|
---|
330 | extern ER dis_tex(void) throw();
|
---|
331 | extern ER ena_tex(void) throw();
|
---|
332 | extern bool_t sns_tex(void) throw();
|
---|
333 | extern ER ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
|
---|
334 |
|
---|
335 | /*
|
---|
336 | * ¯úEÊM@\
|
---|
337 | */
|
---|
338 | extern ER_ID acre_sem(const T_CSEM *pk_csem) throw();
|
---|
339 | extern ER del_sem(ID semid) throw();
|
---|
340 | extern ER sig_sem(ID semid) throw();
|
---|
341 | extern ER isig_sem(ID semid) throw();
|
---|
342 | extern ER wai_sem(ID semid) throw();
|
---|
343 | extern ER pol_sem(ID semid) throw();
|
---|
344 | extern ER twai_sem(ID semid, TMO tmout) throw();
|
---|
345 | extern ER ini_sem(ID semid) throw();
|
---|
346 | extern ER ref_sem(ID semid, T_RSEM *pk_rsem) throw();
|
---|
347 |
|
---|
348 | extern ER_ID acre_flg(const T_CFLG *pk_cflg) throw();
|
---|
349 | extern ER del_flg(ID flgid) throw();
|
---|
350 | extern ER set_flg(ID flgid, FLGPTN setptn) throw();
|
---|
351 | extern ER iset_flg(ID flgid, FLGPTN setptn) throw();
|
---|
352 | extern ER clr_flg(ID flgid, FLGPTN clrptn) throw();
|
---|
353 | extern ER wai_flg(ID flgid, FLGPTN waiptn,
|
---|
354 | MODE wfmode, FLGPTN *p_flgptn) throw();
|
---|
355 | extern ER pol_flg(ID flgid, FLGPTN waiptn,
|
---|
356 | MODE wfmode, FLGPTN *p_flgptn) throw();
|
---|
357 | extern ER twai_flg(ID flgid, FLGPTN waiptn,
|
---|
358 | MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
|
---|
359 | extern ER ini_flg(ID flgid) throw();
|
---|
360 | extern ER ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
|
---|
361 |
|
---|
362 | extern ER_ID acre_dtq(const T_CDTQ *pk_cdtq) throw();
|
---|
363 | extern ER del_dtq(ID dtqid) throw();
|
---|
364 | extern ER snd_dtq(ID dtqid, intptr_t data) throw();
|
---|
365 | extern ER psnd_dtq(ID dtqid, intptr_t data) throw();
|
---|
366 | extern ER ipsnd_dtq(ID dtqid, intptr_t data) throw();
|
---|
367 | extern ER tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
|
---|
368 | extern ER fsnd_dtq(ID dtqid, intptr_t data) throw();
|
---|
369 | extern ER ifsnd_dtq(ID dtqid, intptr_t data) throw();
|
---|
370 | extern ER rcv_dtq(ID dtqid, intptr_t *p_data) throw();
|
---|
371 | extern ER prcv_dtq(ID dtqid, intptr_t *p_data) throw();
|
---|
372 | extern ER trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
|
---|
373 | extern ER ini_dtq(ID dtqid) throw();
|
---|
374 | extern ER ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
|
---|
375 |
|
---|
376 | extern ER_ID acre_pdq(const T_CPDQ *pk_cpdq) throw();
|
---|
377 | extern ER del_pdq(ID pdqid) throw();
|
---|
378 | extern ER snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
|
---|
379 | extern ER psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
|
---|
380 | extern ER ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
|
---|
381 | extern ER tsnd_pdq(ID pdqid, intptr_t data,
|
---|
382 | PRI datapri, TMO tmout) throw();
|
---|
383 | extern ER rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
|
---|
384 | extern ER prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
|
---|
385 | extern ER trcv_pdq(ID pdqid, intptr_t *p_data,
|
---|
386 | PRI *p_datapri, TMO tmout) throw();
|
---|
387 | extern ER ini_pdq(ID pdqid) throw();
|
---|
388 | extern ER ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
|
---|
389 |
|
---|
390 | extern ER_ID acre_mbx(const T_CMBX *pk_cmbx) throw();
|
---|
391 | extern ER del_mbx(ID mbxid) throw();
|
---|
392 | extern ER snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
|
---|
393 | extern ER rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
|
---|
394 | extern ER prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
|
---|
395 | extern ER trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
|
---|
396 | extern ER ini_mbx(ID mbxid) throw();
|
---|
397 | extern ER ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
|
---|
398 |
|
---|
399 | /*
|
---|
400 | * v[Ç@\
|
---|
401 | */
|
---|
402 | extern ER_ID acre_mpf(const T_CMPF *pk_cmpf) throw();
|
---|
403 | extern ER del_mpf(ID mpfid) throw();
|
---|
404 | extern ER get_mpf(ID mpfid, void **p_blk) throw();
|
---|
405 | extern ER pget_mpf(ID mpfid, void **p_blk) throw();
|
---|
406 | extern ER tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
|
---|
407 | extern ER rel_mpf(ID mpfid, void *blk) throw();
|
---|
408 | extern ER ini_mpf(ID mpfid) throw();
|
---|
409 | extern ER ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
|
---|
410 |
|
---|
411 | /*
|
---|
412 | * ÔÇ@\
|
---|
413 | */
|
---|
414 | extern ER get_tim(SYSTIM *p_systim) throw();
|
---|
415 | extern ER get_utm(SYSUTM *p_sysutm) throw();
|
---|
416 |
|
---|
417 | extern ER_ID acre_cyc(const T_CCYC *pk_ccyc) throw();
|
---|
418 | extern ER del_cyc(ID cycid) throw();
|
---|
419 | extern ER sta_cyc(ID cycid) throw();
|
---|
420 | extern ER stp_cyc(ID cycid) throw();
|
---|
421 | extern ER ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
|
---|
422 |
|
---|
423 | extern ER_ID acre_alm(const T_CALM *pk_calm) throw();
|
---|
424 | extern ER del_alm(ID almid) throw();
|
---|
425 | extern ER sta_alm(ID almid, RELTIM almtim) throw();
|
---|
426 | extern ER ista_alm(ID almid, RELTIM almtim) throw();
|
---|
427 | extern ER stp_alm(ID almid) throw();
|
---|
428 | extern ER istp_alm(ID almid) throw();
|
---|
429 | extern ER ref_alm(ID almid, T_RALM *pk_ralm) throw();
|
---|
430 |
|
---|
431 | /*
|
---|
432 | * VXeóÔÇ@\
|
---|
433 | */
|
---|
434 | extern ER rot_rdq(PRI tskpri) throw();
|
---|
435 | extern ER irot_rdq(PRI tskpri) throw();
|
---|
436 | extern ER get_tid(ID *p_tskid) throw();
|
---|
437 | extern ER iget_tid(ID *p_tskid) throw();
|
---|
438 | extern ER loc_cpu(void) throw();
|
---|
439 | extern ER iloc_cpu(void) throw();
|
---|
440 | extern ER unl_cpu(void) throw();
|
---|
441 | extern ER iunl_cpu(void) throw();
|
---|
442 | extern ER dis_dsp(void) throw();
|
---|
443 | extern ER ena_dsp(void) throw();
|
---|
444 | extern bool_t sns_ctx(void) throw();
|
---|
445 | extern bool_t sns_loc(void) throw();
|
---|
446 | extern bool_t sns_dsp(void) throw();
|
---|
447 | extern bool_t sns_dpn(void) throw();
|
---|
448 | extern bool_t sns_ker(void) throw();
|
---|
449 | extern ER ext_ker(void) throw();
|
---|
450 |
|
---|
451 | /*
|
---|
452 | * ÝÇ@\
|
---|
453 | */
|
---|
454 | extern ER_ID acre_isr(const T_CISR *pk_cisr) throw();
|
---|
455 | extern ER del_isr(ID isrid) throw();
|
---|
456 | extern ER dis_int(INTNO intno) throw();
|
---|
457 | extern ER ena_int(INTNO intno) throw();
|
---|
458 | extern ER chg_ipm(PRI intpri) throw();
|
---|
459 | extern ER get_ipm(PRI *p_intpri) throw();
|
---|
460 |
|
---|
461 | /*
|
---|
462 | * CPUáOÇ@\
|
---|
463 | */
|
---|
464 | extern bool_t xsns_dpn(void *p_excinf) throw();
|
---|
465 | extern bool_t xsns_xpn(void *p_excinf) throw();
|
---|
466 |
|
---|
467 | #endif /* TOPPERS_MACRO_ONLY */
|
---|
468 |
|
---|
469 | /*
|
---|
470 | * IuWFNg®«Ìè`
|
---|
471 | */
|
---|
472 | #define TA_ACT UINT_C(0x02) /* ^XNðN®³ê½óÔŶ¬ */
|
---|
473 |
|
---|
474 | #define TA_TPRI UINT_C(0x01) /* ^XNÌÒ¿sñðDæxÉ */
|
---|
475 | #define TA_MPRI UINT_C(0x02) /* bZ[WL
|
---|
476 | [ðDæxÉ */
|
---|
477 |
|
---|
478 | #define TA_WMUL UINT_C(0x02) /* ¡ÌÒ¿^XN */
|
---|
479 | #define TA_CLR UINT_C(0x04) /* CxgtOÌNAwè */
|
---|
480 |
|
---|
481 | #define TA_STA UINT_C(0x02) /* üúnhð®ìóÔŶ¬ */
|
---|
482 |
|
---|
483 | #define TA_NONKERNEL UINT_C(0x02) /* J[lÇOÌÝ */
|
---|
484 |
|
---|
485 | #define TA_ENAINT UINT_C(0x01) /* ÝvÖ~tOðNA */
|
---|
486 | #define TA_EDGE UINT_C(0x02) /* GbWgK */
|
---|
487 |
|
---|
488 | /*
|
---|
489 | * T[rXR[Ì®ì[hÌè`
|
---|
490 | */
|
---|
491 | #define TWF_ORW UINT_C(0x01) /* CxgtOÌORÒ¿ */
|
---|
492 | #define TWF_ANDW UINT_C(0x02) /* CxgtOÌANDÒ¿ */
|
---|
493 |
|
---|
494 | /*
|
---|
495 | * IuWFNgÌóÔÌè`
|
---|
496 | */
|
---|
497 | #define TTS_RUN UINT_C(0x01) /* ÀsóÔ */
|
---|
498 | #define TTS_RDY UINT_C(0x02) /* ÀsÂ\óÔ */
|
---|
499 | #define TTS_WAI UINT_C(0x04) /* Ò¿óÔ */
|
---|
500 | #define TTS_SUS UINT_C(0x08) /* §Ò¿óÔ */
|
---|
501 | #define TTS_WAS UINT_C(0x0c) /* ñdÒ¿óÔ */
|
---|
502 | #define TTS_DMT UINT_C(0x10) /* x~óÔ */
|
---|
503 |
|
---|
504 | #define TTW_SLP UINT_C(0x0001) /* N°Ò¿ */
|
---|
505 | #define TTW_DLY UINT_C(0x0002) /* ÔoßÒ¿ */
|
---|
506 | #define TTW_SEM UINT_C(0x0004) /* Z}tH̹l¾Ò¿ */
|
---|
507 | #define TTW_FLG UINT_C(0x0008) /* CxgtOÒ¿ */
|
---|
508 | #define TTW_SDTQ UINT_C(0x0010) /* f[^L
|
---|
509 | [ÖÌMÒ¿ */
|
---|
510 | #define TTW_RDTQ UINT_C(0x0020) /* f[^L
|
---|
511 | [©çÌóMÒ¿ */
|
---|
512 | #define TTW_SPDQ UINT_C(0x0100) /* Dæxf[^L
|
---|
513 | [ÖÌMÒ¿ */
|
---|
514 | #define TTW_RPDQ UINT_C(0x0200) /* Dæxf[^L
|
---|
515 | [©çÌóMÒ¿ */
|
---|
516 | #define TTW_MBX UINT_C(0x0040) /* [{bNX©çÌóMÒ¿ */
|
---|
517 | #define TTW_MPF UINT_C(0x2000) /* Åè·ubNÌl¾Ò¿ */
|
---|
518 |
|
---|
519 | #define TTEX_ENA UINT_C(0x01) /* ^XNáOÂóÔ */
|
---|
520 | #define TTEX_DIS UINT_C(0x02) /* ^XNáOÖ~óÔ */
|
---|
521 |
|
---|
522 | #define TCYC_STP UINT_C(0x01) /* üúnhª®ìµÄ¢È¢ */
|
---|
523 | #define TCYC_STA UINT_C(0x02) /* üúnhª®ìµÄ¢é */
|
---|
524 |
|
---|
525 | #define TALM_STP UINT_C(0x01) /* A[nhª®ìµÄ¢È¢ */
|
---|
526 | #define TALM_STA UINT_C(0x02) /* A[nhª®ìµÄ¢é */
|
---|
527 |
|
---|
528 | /*
|
---|
529 | * »Ì¼ÌèÌè`
|
---|
530 | */
|
---|
531 | #define TSK_SELF 0 /* ©^XNwè */
|
---|
532 | #define TSK_NONE 0 /* Y·é^XNªÈ¢ */
|
---|
533 |
|
---|
534 | #define TPRI_SELF 0 /* ©^XNÌx[XDæx */
|
---|
535 | #define TPRI_INI 0 /* ^XNÌN®Dæx */
|
---|
536 |
|
---|
537 | #define TIPM_ENAALL 0 /* ÝDæx}XNSð */
|
---|
538 |
|
---|
539 | /*
|
---|
540 | * \¬èÆ}N
|
---|
541 | */
|
---|
542 |
|
---|
543 | /*
|
---|
544 | * T|[g·é@\
|
---|
545 | */
|
---|
546 | #ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
|
---|
547 | #define TOPPERS_SUPPORT_DIS_INT /* dis_intªT|[g³êÄ¢é */
|
---|
548 | #endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
|
---|
549 |
|
---|
550 | #ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
|
---|
551 | #define TOPPERS_SUPPORT_ENA_INT /* ena_intªT|[g³êÄ¢é */
|
---|
552 | #endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
|
---|
553 |
|
---|
554 | #ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
|
---|
555 | #define TOPPERS_SUPPORT_GET_UTM /* get_utmªT|[g³êÄ¢é */
|
---|
556 | #endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
|
---|
557 |
|
---|
558 | #define TOPPERS_SUPPORT_DYNAMIC_CRE /* ®I¶¬@\g£ */
|
---|
559 |
|
---|
560 | /*
|
---|
561 | * DæxÌÍÍ
|
---|
562 | */
|
---|
563 | #define TMIN_TPRI 1 /* ^XNDæxÌŬliÅlj*/
|
---|
564 | #define TMAX_TPRI 16 /* ^XNDæxÌÅåliÅálj*/
|
---|
565 | #define TMIN_DPRI 1 /* f[^DæxÌŬliÅlj*/
|
---|
566 | #define TMAX_DPRI 16 /* f[^DæxÌÅåliÅálj*/
|
---|
567 | #define TMIN_MPRI 1 /* bZ[WDæxÌŬliÅlj*/
|
---|
568 | #define TMAX_MPRI 16 /* bZ[WDæxÌÅåliÅálj*/
|
---|
569 | #define TMIN_ISRPRI 1 /* ÝT[rX[`DæxÌŬl */
|
---|
570 | #define TMAX_ISRPRI 16 /* ÝT[rX[`DæxÌÅål */
|
---|
571 |
|
---|
572 | /*
|
---|
573 | * o[Wîñ
|
---|
574 | */
|
---|
575 | #define TKERNEL_MAKER UINT_C(0x0118) /* J[lÌ[J[R[h */
|
---|
576 | #define TKERNEL_PRID UINT_C(0x0007) /* J[l̯ÊÔ */
|
---|
577 | #define TKERNEL_SPVER UINT_C(0xf517) /* J[ldlÌo[WÔ */
|
---|
578 | #define TKERNEL_PRVER UINT_C(0x1092) /* J[lÌo[WÔ */
|
---|
579 |
|
---|
580 | /*
|
---|
581 | * L
|
---|
582 | [COñÌÅål
|
---|
583 | */
|
---|
584 | #define TMAX_ACTCNT UINT_C(1) /* N®vL
|
---|
585 | [COÌÅål */
|
---|
586 | #define TMAX_WUPCNT UINT_C(1) /* N°vL
|
---|
587 | [COÌÅål */
|
---|
588 |
|
---|
589 | /*
|
---|
590 | * rbgp^[Ìrbg
|
---|
591 | */
|
---|
592 | #ifndef TBIT_TEXPTN /* ^XNáOvöÌrbg */
|
---|
593 | #define TBIT_TEXPTN (sizeof(TEXPTN) * CHAR_BIT)
|
---|
594 | #endif /* TBIT_TEXPTN */
|
---|
595 |
|
---|
596 | #ifndef TBIT_FLGPTN /* CxgtOÌrbg */
|
---|
597 | #define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT)
|
---|
598 | #endif /* TBIT_FLGPTN */
|
---|
599 |
|
---|
600 | /*
|
---|
601 | * ÌæmÛ̽ßÌ}N
|
---|
602 | *
|
---|
603 | * ȺÌTOPPERS_COUNT_SZÆTOPPERS_ROUND_SZÌè`ÍCunitª2ÌÐæÅ
|
---|
604 | * 鱯ð¼èµÄ¢éD
|
---|
605 | */
|
---|
606 | #ifndef TOPPERS_COUNT_SZ
|
---|
607 | #define TOPPERS_COUNT_SZ(sz, unit) (((sz) + (unit) - 1) / (unit))
|
---|
608 | #endif /* TOPPERS_COUNT_SZ */
|
---|
609 | #ifndef TOPPERS_ROUND_SZ
|
---|
610 | #define TOPPERS_ROUND_SZ(sz, unit) (((sz) + (unit) - 1) & ~((unit) - 1))
|
---|
611 | #endif /* TOPPERS_ROUND_SZ */
|
---|
612 |
|
---|
613 | #define COUNT_STK_T(sz) TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
|
---|
614 | #define ROUND_STK_T(sz) TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
|
---|
615 |
|
---|
616 | #define COUNT_MPF_T(blksz) TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
|
---|
617 | #define ROUND_MPF_T(blksz) TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
|
---|
618 |
|
---|
619 | #define TSZ_DTQMB(dtqcnt) (sizeof(intptr_t) * (dtqcnt))
|
---|
620 | #define TCNT_DTQMB(dtqcnt) TOPPERS_COUNT_SZ(TSZ_DTQMB(dtqcnt), sizeof(MB_T))
|
---|
621 |
|
---|
622 | #ifndef TSZ_PDQMB
|
---|
623 | #define TSZ_PDQMB(pdqcnt) (sizeof(intptr_t) * 3 * (pdqcnt))
|
---|
624 | #endif /* TSZ_PDQMB */
|
---|
625 | #define TCNT_PDQMB(pdqcnt) TOPPERS_COUNT_SZ(TSZ_PDQMB(pdqcnt), sizeof(MB_T))
|
---|
626 |
|
---|
627 | #define TSZ_MPFMB(blkcnt) (sizeof(uint_t) * (blkcnt))
|
---|
628 | #define TCNT_MPFMB(blkcnt) TOPPERS_COUNT_SZ(TSZ_MPFMB(blkcnt), sizeof(MB_T))
|
---|
629 |
|
---|
630 | /*
|
---|
631 | * »Ì¼Ì\¬è
|
---|
632 | */
|
---|
633 | #define TMAX_MAXSEM UINT_MAX /* Z}tHÌÅå¹ÌÅål */
|
---|
634 |
|
---|
635 | #ifdef __cplusplus
|
---|
636 | }
|
---|
637 | #endif
|
---|
638 |
|
---|
639 | #endif /* TOPPERS_KERNEL_H */
|
---|