source: mypx/include/kernel.h @ 7

このファイルの 7 以降における最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 16.2 KB
 
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 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
12 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
13 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
14 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
15 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
16 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
17 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
18 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
19 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
20 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
21 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
22 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
23 *      €È¡¥
24 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
25 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
26 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
27 *        Êó¹ð€¹€ë€³€È¡¥
28 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
29 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
30 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
31 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
32 *      ÌÈÀÕ€¹€ë€³€È¡¥
33 *
34 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
35 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
36 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
37 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
38 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
39 *
40 *  $Id$
41 */
42
43/*
44 *              TOPPERS/ASP¥«¡Œ¥Í¥ë Éžœà¥Ø¥Ã¥À¥Õ¥¡¥€¥ë
45 *
46 *  TOPPERS/ASP¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ€È¡€É¬Í׀ʥǡŒ
47 *  ¥¿·¿¡€Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€òŽÞ€à¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡¥
48 *
49 *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
50 *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
51 *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
52 *
53 *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
54 *  €Ï€Ê€€¡¥
55 */
56
57#ifndef TOPPERS_KERNEL_H
58#define TOPPERS_KERNEL_H
59
60#ifdef __cplusplus
61extern "C" {
62#endif
63
64/*
65 *      TOPPERS¶ŠÄ̀ΥǡŒ¥¿·¿¡ŠÄê¿ô¡Š¥Þ¥¯¥í
66 */
67#include <t_stddef.h>
68
69/*
70 *  ¥¿¡Œ¥²¥Ã¥È°ÍžÉô
71 */
72#include "target_kernel.h"
73
74#ifndef TOPPERS_MACRO_ONLY
75
76/*
77 *  ¥Ç¡Œ¥¿·¿€ÎÄêµÁ
78 */
79
80/*
81 *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€ä¥ª¥Ö¥ž¥§¥¯¥ÈÈÖ¹æ€Î·¿ÄêµÁ
82 */
83typedef uint_t          TEXPTN;         /* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
84typedef uint_t          FLGPTN;         /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
85typedef uint_t          INTNO;          /* ³ä¹þ€ßÈÖ¹æ */
86typedef uint_t          INHNO;          /* ³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ */
87typedef uint_t          EXCNO;          /* CPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ */
88
89/*
90 *  œèÍýñ°Ì€Î·¿ÄêµÁ
91 */
92typedef void    (*TASK)(intptr_t exinf);
93typedef void    (*TEXRTN)(TEXPTN texptn, intptr_t exinf);
94typedef void    (*CYCHDR)(intptr_t exinf);
95typedef void    (*ALMHDR)(intptr_t exinf);
96typedef void    (*ISR)(intptr_t exinf);
97typedef void    (*INTHDR)(void);
98typedef void    (*EXCHDR)(void *p_excinf);
99typedef void    (*INIRTN)(intptr_t exinf);
100typedef void    (*TERRTN)(intptr_t exinf);
101
102/*
103 *  ¥á¥â¥êÎΰè³ÎÊ݀΀¿€á€Î·¿ÄêµÁ
104 */
105#ifndef TOPPERS_STK_T
106#define TOPPERS_STK_T   intptr_t
107#endif /* TOPPERS_STK_T */
108typedef TOPPERS_STK_T   STK_T;  /* ¥¹¥¿¥Ã¥¯Îΰè€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
109
110#ifndef TOPPERS_MPF_T
111#define TOPPERS_MPF_T   intptr_t
112#endif /* TOPPERS_MPF_T */
113typedef TOPPERS_MPF_T   MPF_T;  /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ò³ÎÊÝ€¹€ë€¿€á€Î·¿ */
114
115/*
116 *  ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À€Î·¿ÄêµÁ
117 */
118typedef struct t_msg {                  /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
119        struct t_msg    *pk_next;
120} T_MSG;
121
122typedef struct t_msg_pri {              /* Í¥ÀèÅÙÉÕ€­¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
123        T_MSG   msgque;                         /* ¥á¥Ã¥»¡Œ¥ž¥Ø¥Ã¥À */
124        PRI             msgpri;                         /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅÙ */
125} T_MSG_PRI;
126
127/*
128 *  ¥Ñ¥±¥Ã¥È·ÁŒ°€ÎÄêµÁ
129 */
130typedef struct t_rtsk {
131        STAT    tskstat;        /* ¥¿¥¹¥¯ŸõÂÖ */
132        PRI             tskpri;         /* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
133        PRI             tskbpri;        /* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
134        STAT    tskwait;        /* ÂÔ€ÁÍ×°ø */
135        ID              wobjid;         /* ÂÔ€ÁÂП݀Υª¥Ö¥ž¥§¥¯¥È€ÎID */
136        TMO             lefttmo;        /* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
137        uint_t  actcnt;         /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô */
138        uint_t  wupcnt;         /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô */
139} T_RTSK;
140
141typedef struct t_rtex {
142        STAT    texstat;        /* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
143        TEXPTN  pndptn;         /* ÊÝαÎã³°Í×°ø */
144} T_RTEX;
145
146typedef struct t_rsem {
147        ID              wtskid;         /* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
148        uint_t  semcnt;         /* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
149} T_RSEM;
150
151typedef struct t_rflg {
152        ID              wtskid;         /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
153        FLGPTN  flgptn;         /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
154} T_RFLG;
155
156typedef struct t_rdtq {
157        ID              stskid;         /* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
158        ID              rtskid;         /* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
159        uint_t  sdtqcnt;        /* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎΰè€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
160} T_RDTQ;
161
162typedef struct t_rpdq {
163        ID              stskid;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
164                                                   €ÎIDÈÖ¹æ */
165        ID              rtskid;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
166                                                   €ÎIDÈÖ¹æ */
167        uint_t  spdqcnt;        /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒŽÉÍýÎΰè€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
168                                                   ¥¿€Î¿ô */
169} T_RPDQ;
170
171typedef struct t_rmbx {
172        ID              wtskid;         /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
173        T_MSG   *pk_msg;        /* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
174                                                   €ÎÀèÆ¬ÈÖÃÏ */
175} T_RMBX;
176
177typedef struct t_rmpf {
178        ID              wtskid;         /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
179                                                   IDÈÖ¹æ */
180        uint_t  fblkcnt;        /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€Î¶õ€­¥á¥â¥êÎΰè€Ë³ä€ê
181                                                   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
182} T_RMPF;
183
184typedef struct t_rcyc {
185        STAT    cycstat;        /* ŒþŽü¥Ï¥ó¥É¥é€ÎưºîŸõÂÖ */
186        RELTIM  lefttim;        /* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂлþŽÖ */
187} T_RCYC;
188
189typedef struct t_ralm {
190        STAT    almstat;        /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎưºîŸõÂÖ */
191        RELTIM  lefttim;        /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂлþŽÖ */
192} T_RALM;
193
194/*
195 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
196 */
197
198/*
199 *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
200 */
201extern ER               act_tsk(ID tskid) throw();
202extern ER               iact_tsk(ID tskid) throw();
203extern ER_UINT  can_act(ID tskid) throw();
204extern ER               ext_tsk(void) throw();
205extern ER               ter_tsk(ID tskid) throw();
206extern ER               chg_pri(ID tskid, PRI tskpri) throw();
207extern ER               get_pri(ID tskid, PRI *p_tskpri) throw();
208extern ER               get_inf(intptr_t *p_exinf) throw();
209extern ER               ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
210
211/*
212 *  ¥¿¥¹¥¯ÉÕ°ƱŽüµ¡Çœ
213 */
214extern ER               slp_tsk(void) throw();
215extern ER               tslp_tsk(TMO tmout) throw();
216extern ER               wup_tsk(ID tskid) throw();
217extern ER               iwup_tsk(ID tskid) throw();
218extern ER_UINT  can_wup(ID tskid) throw();
219extern ER               rel_wai(ID tskid) throw();
220extern ER               irel_wai(ID tskid) throw();
221extern ER               sus_tsk(ID tskid) throw();
222extern ER               rsm_tsk(ID tskid) throw();
223extern ER               dly_tsk(RELTIM dlytim) throw();
224
225/*
226 *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
227 */
228extern ER               ras_tex(ID tskid, TEXPTN rasptn) throw();
229extern ER               iras_tex(ID tskid, TEXPTN rasptn) throw();
230extern ER               dis_tex(void) throw();
231extern ER               ena_tex(void) throw();
232extern bool_t   sns_tex(void) throw();
233extern ER               ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
234
235/*
236 *  ƱŽü¡ŠÄÌ¿®µ¡Çœ
237 */
238extern ER               sig_sem(ID semid) throw();
239extern ER               isig_sem(ID semid) throw();
240extern ER               wai_sem(ID semid) throw();
241extern ER               pol_sem(ID semid) throw();
242extern ER               twai_sem(ID semid, TMO tmout) throw();
243extern ER               ini_sem(ID semid) throw();
244extern ER               ref_sem(ID semid, T_RSEM *pk_rsem) throw();
245
246extern ER               set_flg(ID flgid, FLGPTN setptn) throw();
247extern ER               iset_flg(ID flgid, FLGPTN setptn) throw();
248extern ER               clr_flg(ID flgid, FLGPTN clrptn) throw();
249extern ER               wai_flg(ID flgid, FLGPTN waiptn,
250                                                MODE wfmode, FLGPTN *p_flgptn) throw();
251extern ER               pol_flg(ID flgid, FLGPTN waiptn,
252                                                MODE wfmode, FLGPTN *p_flgptn) throw();
253extern ER               twai_flg(ID flgid, FLGPTN waiptn,
254                                                MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
255extern ER               ini_flg(ID flgid) throw();
256extern ER               ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
257
258extern ER               snd_dtq(ID dtqid, intptr_t data) throw();
259extern ER               psnd_dtq(ID dtqid, intptr_t data) throw();
260extern ER               ipsnd_dtq(ID dtqid, intptr_t data) throw();
261extern ER               tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
262extern ER               fsnd_dtq(ID dtqid, intptr_t data) throw();
263extern ER               ifsnd_dtq(ID dtqid, intptr_t data) throw();
264extern ER               rcv_dtq(ID dtqid, intptr_t *p_data) throw();
265extern ER               prcv_dtq(ID dtqid, intptr_t *p_data) throw();
266extern ER               trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
267extern ER               ini_dtq(ID dtqid) throw();
268extern ER               ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
269
270extern ER               snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
271extern ER               psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
272extern ER               ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
273extern ER               tsnd_pdq(ID pdqid, intptr_t data,
274                                                                                PRI datapri, TMO tmout) throw();
275extern ER               rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
276extern ER               prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
277extern ER               trcv_pdq(ID pdqid, intptr_t *p_data,
278                                                                                PRI *p_datapri, TMO tmout) throw();
279extern ER               ini_pdq(ID pdqid) throw();
280extern ER               ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
281
282extern ER               snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
283extern ER               rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
284extern ER               prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
285extern ER               trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
286extern ER               ini_mbx(ID mbxid) throw();
287extern ER               ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
288
289/*
290 *  ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýµ¡Çœ
291 */
292extern ER               get_mpf(ID mpfid, void **p_blk) throw();
293extern ER               pget_mpf(ID mpfid, void **p_blk) throw();
294extern ER               tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
295extern ER               rel_mpf(ID mpfid, void *blk) throw();
296extern ER               ini_mpf(ID mpfid) throw();
297extern ER               ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
298
299/*
300 *  »þŽÖŽÉÍýµ¡Çœ
301 */
302extern ER               get_tim(SYSTIM *p_systim) throw();
303extern ER               get_utm(SYSUTM *p_sysutm) throw();
304
305extern ER               sta_cyc(ID cycid) throw();
306extern ER               stp_cyc(ID cycid) throw();
307extern ER               ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
308
309extern ER               sta_alm(ID almid, RELTIM almtim) throw();
310extern ER               ista_alm(ID almid, RELTIM almtim) throw();
311extern ER               stp_alm(ID almid) throw();
312extern ER               istp_alm(ID almid) throw();
313extern ER               ref_alm(ID almid, T_RALM *pk_ralm) throw();
314
315/*
316 *  ¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
317 */
318extern ER               rot_rdq(PRI tskpri) throw();
319extern ER               irot_rdq(PRI tskpri) throw();
320extern ER               get_tid(ID *p_tskid) throw();
321extern ER               iget_tid(ID *p_tskid) throw();
322extern ER               loc_cpu(void) throw();
323extern ER               iloc_cpu(void) throw();
324extern ER               unl_cpu(void) throw();
325extern ER               iunl_cpu(void) throw();
326extern ER               dis_dsp(void) throw();
327extern ER               ena_dsp(void) throw();
328extern bool_t   sns_ctx(void) throw();
329extern bool_t   sns_loc(void) throw();
330extern bool_t   sns_dsp(void) throw();
331extern bool_t   sns_dpn(void) throw();
332extern bool_t   sns_ker(void) throw();
333extern ER               ext_ker(void) throw();
334
335/*
336 *  ³ä¹þ€ßŽÉÍýµ¡Çœ
337 */
338extern ER               dis_int(INTNO intno) throw();
339extern ER               ena_int(INTNO intno) throw();
340extern ER               chg_ipm(PRI intpri) throw();
341extern ER               get_ipm(PRI *p_intpri) throw();
342
343/*
344 *  CPUÎã³°ŽÉÍýµ¡Çœ
345 */
346extern bool_t   xsns_dpn(void *p_excinf) throw();
347extern bool_t   xsns_xpn(void *p_excinf) throw();
348
349#endif /* TOPPERS_MACRO_ONLY */
350
351/*
352 *  ¥ª¥Ö¥ž¥§¥¯¥È°À­€ÎÄêµÁ
353 */
354#define TA_ACT                  UINT_C(0x02)    /* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
355
356#define TA_TPRI                 UINT_C(0x01)    /* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
357#define TA_MPRI                 UINT_C(0x02)    /* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
358
359#define TA_WMUL                 UINT_C(0x02)    /* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
360#define TA_CLR                  UINT_C(0x04)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
361
362#define TA_STA                  UINT_C(0x02)    /* ŒþŽü¥Ï¥ó¥É¥é€òưºîŸõÂÖ€ÇÀžÀ® */
363
364#define TA_NONKERNEL    UINT_C(0x02)    /* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
365
366#define TA_ENAINT               UINT_C(0x01)    /* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
367#define TA_EDGE                 UINT_C(0x02)    /* ¥š¥Ã¥ž¥È¥ê¥¬ */
368
369/*
370 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Îưºî¥â¡Œ¥É€ÎÄêµÁ
371 */
372#define TWF_ORW                 UINT_C(0x01)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
373#define TWF_ANDW                UINT_C(0x02)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
374
375/*
376 *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
377 */
378#define TTS_RUN                 UINT_C(0x01)    /* ŒÂ¹ÔŸõÂÖ */
379#define TTS_RDY                 UINT_C(0x02)    /* ŒÂ¹Ô²ÄÇœŸõÂÖ */
380#define TTS_WAI                 UINT_C(0x04)    /* ÂÔ€ÁŸõÂÖ */
381#define TTS_SUS                 UINT_C(0x08)    /* ¶¯À©ÂÔ€ÁŸõÂÖ */
382#define TTS_WAS                 UINT_C(0x0c)    /* ÆóœÅÂÔ€ÁŸõÂÖ */
383#define TTS_DMT                 UINT_C(0x10)    /* µÙ»ßŸõÂÖ */
384
385#define TTW_SLP                 UINT_C(0x0001)  /* µ¯Ÿ²ÂÔ€Á */
386#define TTW_DLY                 UINT_C(0x0002)  /* »þŽÖ·Ð²áÂÔ€Á */
387#define TTW_SEM                 UINT_C(0x0004)  /* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
388#define TTW_FLG                 UINT_C(0x0008)  /* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
389#define TTW_SDTQ                UINT_C(0x0010)  /* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
390#define TTW_RDTQ                UINT_C(0x0020)  /* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
391#define TTW_SPDQ                UINT_C(0x0100)  /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
392#define TTW_RPDQ                UINT_C(0x0200)  /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
393#define TTW_MBX                 UINT_C(0x0040)  /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
394#define TTW_MPF                 UINT_C(0x2000)  /* žÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
395
396#define TTEX_ENA                UINT_C(0x01)    /* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
397#define TTEX_DIS                UINT_C(0x02)    /* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
398
399#define TCYC_STP                UINT_C(0x01)    /* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
400#define TCYC_STA                UINT_C(0x02)    /* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
401
402#define TALM_STP                UINT_C(0x01)    /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
403#define TALM_STA                UINT_C(0x02)    /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
404
405/*
406 *  €œ€ÎŸ€ÎÄê¿ô€ÎÄêµÁ
407 */
408#define TSK_SELF                0                       /* Œ«¥¿¥¹¥¯»ØÄê */
409#define TSK_NONE                0                       /* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
410
411#define TPRI_SELF               0                       /* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
412#define TPRI_INI                0                       /* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
413
414#define TIPM_ENAALL             0                       /* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœü */
415
416/*
417 *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
418 */
419
420/*
421 *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
422 */
423#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
424#define TOPPERS_SUPPORT_DIS_INT                 /* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
425#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
426
427#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
428#define TOPPERS_SUPPORT_ENA_INT                 /* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
429#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
430
431#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
432#define TOPPERS_SUPPORT_GET_UTM                 /* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
433#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
434
435/*
436 *  Í¥ÀèÅÙ€ÎÈϰÏ
437 */
438#define TMIN_TPRI               1                       /* ¥¿¥¹¥¯Í¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
439#define TMAX_TPRI               16                      /* ¥¿¥¹¥¯Í¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
440#define TMIN_DPRI               1                       /* ¥Ç¡Œ¥¿Í¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
441#define TMAX_DPRI               16                      /* ¥Ç¡Œ¥¿Í¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
442#define TMIN_MPRI               1                       /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
443#define TMAX_MPRI               16                      /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
444#define TMIN_ISRPRI             1                       /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـκǟ®ÃÍ */
445#define TMAX_ISRPRI             16                      /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـκÇÂçÃÍ */
446
447/*
448 *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
449 */
450#define TKERNEL_MAKER   UINT_C(0x0118)  /* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
451#define TKERNEL_PRID    UINT_C(0x0007)  /* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
452#define TKERNEL_SPVER   UINT_C(0xf517)  /* ¥«¡Œ¥Í¥ë»ÅÍ̀ΥСŒ¥ž¥ç¥óÈÖ¹æ */
453#define TKERNEL_PRVER   UINT_C(0x1092)  /* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
454
455/*
456 *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
457 */
458#define TMAX_ACTCNT             UINT_C(1)               /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
459#define TMAX_WUPCNT             UINT_C(1)               /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
460
461/*
462 *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
463 */
464#ifndef TBIT_TEXPTN                                     /* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
465#define TBIT_TEXPTN             (sizeof(TEXPTN) * CHAR_BIT)
466#endif /* TBIT_TEXPTN */
467
468#ifndef TBIT_FLGPTN                                     /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
469#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
470#endif /* TBIT_FLGPTN */
471
472/*
473 *  ¥á¥â¥êÎΰè³ÎÊ݀΀¿€á€Î¥Þ¥¯¥í
474 *
475 *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
476 *  €ë€³€È€ò²ŸÄꀷ€Æ€€€ë¡¥
477 */
478#ifndef TOPPERS_COUNT_SZ
479#define TOPPERS_COUNT_SZ(sz, unit)      (((sz) + (unit) - 1) / (unit))
480#endif /* TOPPERS_COUNT_SZ */
481#ifndef TOPPERS_ROUND_SZ
482#define TOPPERS_ROUND_SZ(sz, unit)      (((sz) + (unit) - 1) & ~((unit) - 1))
483#endif /* TOPPERS_ROUND_SZ */
484
485#define COUNT_STK_T(sz)         TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
486#define ROUND_STK_T(sz)         TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
487
488#define COUNT_MPF_T(blksz)      TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
489#define ROUND_MPF_T(blksz)      TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
490
491/*
492 *  €œ€ÎŸ€Î¹œÀ®Äê¿ô
493 */
494#define TMAX_MAXSEM             UINT_MAX        /* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
495
496#ifdef __cplusplus
497}
498#endif
499
500#endif /* TOPPERS_KERNEL_H */
詳しい使い方は TracBrowser を参照してください。