source: mypx/extension/ovrhdr/include/kernel.h @ 7

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

TOPPERS/ASP 1.9.1

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