source: extension/dcre/include/kernel.h

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 20.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 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_ctsk {
131        ATR                     tskatr;         /* ¥¿¥¹¥¯Â°À­ */
132        intptr_t        exinf;          /* ¥¿¥¹¥¯€Î³ÈÄ¥ŸðÊó */
133        TASK            task;           /* ¥¿¥¹¥¯€Î¥á¥€¥ó¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
134        PRI                     itskpri;        /* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
135        SIZE            stksz;          /* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯Îΰè€Î¥µ¥€¥º */
136        STK_T           *stk;           /* ¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃÏ */
137} T_CTSK;
138
139typedef struct t_rtsk {
140        STAT    tskstat;        /* ¥¿¥¹¥¯ŸõÂÖ */
141        PRI             tskpri;         /* ¥¿¥¹¥¯€ÎžœºßÍ¥ÀèÅÙ */
142        PRI             tskbpri;        /* ¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
143        STAT    tskwait;        /* ÂÔ€ÁÍ×°ø */
144        ID              wobjid;         /* ÂÔ€ÁÂП݀Υª¥Ö¥ž¥§¥¯¥È€ÎID */
145        TMO             lefttmo;        /* ¥¿¥€¥à¥¢¥Š¥È€¹€ë€Þ€Ç€Î»þŽÖ */
146        uint_t  actcnt;         /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô */
147        uint_t  wupcnt;         /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô */
148} T_RTSK;
149
150typedef struct t_dtex {
151        ATR             texatr;         /* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó°À­ */
152        TEXRTN  texrtn;         /* ¥¿¥¹¥¯Îã³°œèÍý¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
153} T_DTEX;
154
155typedef struct t_rtex {
156        STAT    texstat;        /* ¥¿¥¹¥¯Îã³°œèÍý€ÎŸõÂÖ */
157        TEXPTN  pndptn;         /* ÊÝαÎã³°Í×°ø */
158} T_RTEX;
159
160typedef struct t_csem {
161        ATR             sematr;         /* ¥»¥Þ¥Õ¥©Â°À­ */
162        uint_t  isemcnt;        /* ¥»¥Þ¥Õ¥©€ÎœéŽü»ñž»¿ô */
163        uint_t  maxsem;         /* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô */
164} T_CSEM;
165
166typedef struct t_rsem {
167        ID              wtskid;         /* ¥»¥Þ¥Õ¥©€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
168        uint_t  semcnt;         /* ¥»¥Þ¥Õ¥©€Îžœºß€Î»ñž»¿ô */
169} T_RSEM;
170
171typedef struct t_cflg {
172        ATR             flgatr;         /* ¥€¥Ù¥ó¥È¥Õ¥é¥°Â°À­ */
173        FLGPTN  iflgptn;        /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
174} T_CFLG;
175
176typedef struct t_rflg {
177        ID              wtskid;         /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
178        FLGPTN  flgptn;         /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Îžœºß€Î¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó */
179} T_RFLG;
180
181typedef struct t_cdtq {
182        ATR             dtqatr;         /* ¥Ç¡Œ¥¿¥­¥å¡ŒÂ°À­ */
183        uint_t  dtqcnt;         /* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎΰè€Ë³ÊÇŒ€Ç€­€ë¥Ç¡Œ¥¿¿ô */
184        void    *dtqmb;         /* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎΰè€ÎÀèÆ¬ÈÖÃÏ */
185} T_CDTQ;
186
187typedef struct t_rdtq {
188        ID              stskid;         /* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
189        ID              rtskid;         /* ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
190        uint_t  sdtqcnt;        /* ¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎΰè€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ¥¿€Î¿ô */
191} T_RDTQ;
192
193typedef struct t_cpdq {
194        ATR             pdqatr;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒÂ°À­ */
195        uint_t  pdqcnt;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒŽÉÍýÎΰè€Ë³ÊÇŒ€Ç€­€ë¥Ç¡Œ¥¿¿ô */
196        PRI             maxdpri;        /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ËÁ÷¿®€Ç€­€ë¥Ç¡Œ¥¿Í¥ÀèÅـκÇ
197                                                   ÂçÃÍ */
198        void    *pdqmb;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒŽÉÍýÎΰè€ÎÀèÆ¬ÈÖÃÏ */
199} T_CPDQ;
200
201typedef struct t_rpdq {
202        ID              stskid;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
203                                                   €ÎIDÈÖ¹æ */
204        ID              rtskid;         /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
205                                                   €ÎIDÈÖ¹æ */
206        uint_t  spdqcnt;        /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒŽÉÍýÎΰè€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥Ç¡Œ
207                                                   ¥¿€Î¿ô */
208} T_RPDQ;
209
210typedef struct t_cmbx {
211        ATR             mbxatr;         /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹Â°À­ */
212        PRI             maxmpri;        /* Í¥ÀèÅ٥ᡌ¥ë¥Ü¥Ã¥¯¥¹€ËÁ÷¿®€Ç€­€ë¥á¥Ã¥»¡Œ¥žÍ¥Àè
213                                                   ÅـκÇÂçÃÍ */
214        void    *mprihd;        /* Í¥ÀèÅÙỀΥá¥Ã¥»¡Œ¥ž¥­¥å¡Œ¥Ø¥Ã¥ÀÎΰè€ÎÀèÆ¬ÈÖÃÏ */
215} T_CMBX;
216
217typedef struct t_rmbx {
218        ID              wtskid;         /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€ÎIDÈÖ¹æ */
219        T_MSG   *pk_msg;        /* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€ÎÀèÆ¬€Ë€Ä€Ê€¬€ì€¿¥á¥Ã¥»¡Œ¥ž
220                                                   €ÎÀèÆ¬ÈÖÃÏ */
221} T_RMBX;
222
223typedef struct t_cmpf {
224        ATR             mpfatr;         /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë°À­ */
225        uint_t  blkcnt;         /* ³ÍÆÀ€Ç€­€ëžÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
226        uint_t  blksz;          /* žÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¥µ¥€¥º */
227        MPF_T   *mpf;           /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÎÀèÆ¬ÈÖÃÏ */
228        void    *mpfmb;         /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎΰè€ÎÀèÆ¬ÈÖÃÏ */
229} T_CMPF;
230
231typedef struct t_rmpf {
232        ID              wtskid;         /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
233                                                   IDÈÖ¹æ */
234        uint_t  fblkcnt;        /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€Î¶õ€­¥á¥â¥êÎΰè€Ë³ä€ê
235                                                   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
236} T_RMPF;
237
238typedef struct t_ccyc {
239        ATR                     cycatr;         /* ŒþŽü¥Ï¥ó¥É¥é°À­ */
240        intptr_t        exinf;          /* ŒþŽü¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
241        CYCHDR          cychdr;         /* ŒþŽü¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ */
242        RELTIM          cyctim;         /* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°ŒþŽü */
243        RELTIM          cycphs;         /* ŒþŽü¥Ï¥ó¥É¥é€Îµ¯Æ°°ÌÁê */
244} T_CCYC;
245
246typedef struct t_rcyc {
247        STAT    cycstat;        /* ŒþŽü¥Ï¥ó¥É¥é€ÎưºîŸõÂÖ */
248        RELTIM  lefttim;        /* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂлþŽÖ */
249} T_RCYC;
250
251typedef struct t_calm {
252        ATR                     almatr;         /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é°À­ */
253        intptr_t        exinf;          /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î³ÈÄ¥ŸðÊó */
254        ALMHDR          almhdr;         /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎÀèÆ¬ÈÖÃÏ */
255} T_CALM;
256
257typedef struct t_ralm {
258        STAT    almstat;        /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎưºîŸõÂÖ */
259        RELTIM  lefttim;        /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂлþŽÖ */
260} T_RALM;
261
262typedef struct t_cisr {
263        ATR                     isratr;         /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó°À­ */
264        intptr_t        exinf;          /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€Î³ÈÄ¥ŸðÊó */
265        INTNO           intno;          /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€òÅÐÏ¿€¹€ë³ä¹þ€ßÈÖ¹æ */
266        ISR                     isr;            /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÀèÆ¬ÈÖÃÏ */
267        PRI                     isrpri;         /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅÙ */
268} T_CISR;
269
270/*
271 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
272 */
273
274/*
275 *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
276 */
277extern ER_UINT  acre_tsk(const T_CTSK *pk_ctsk) throw();
278extern ER               del_tsk(ID tskid) throw();
279extern ER               act_tsk(ID tskid) throw();
280extern ER               iact_tsk(ID tskid) throw();
281extern ER_UINT  can_act(ID tskid) throw();
282extern ER               ext_tsk(void) throw();
283extern ER               ter_tsk(ID tskid) throw();
284extern ER               chg_pri(ID tskid, PRI tskpri) throw();
285extern ER               get_pri(ID tskid, PRI *p_tskpri) throw();
286extern ER               get_inf(intptr_t *p_exinf) throw();
287extern ER               ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
288
289/*
290 *  ¥¿¥¹¥¯ÉÕ°ƱŽüµ¡Çœ
291 */
292extern ER               slp_tsk(void) throw();
293extern ER               tslp_tsk(TMO tmout) throw();
294extern ER               wup_tsk(ID tskid) throw();
295extern ER               iwup_tsk(ID tskid) throw();
296extern ER_UINT  can_wup(ID tskid) throw();
297extern ER               rel_wai(ID tskid) throw();
298extern ER               irel_wai(ID tskid) throw();
299extern ER               sus_tsk(ID tskid) throw();
300extern ER               rsm_tsk(ID tskid) throw();
301extern ER               dly_tsk(RELTIM dlytim) throw();
302
303/*
304 *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
305 */
306extern ER               def_tex(ID tskid, const T_DTEX *pk_dtex) throw();
307extern ER               ras_tex(ID tskid, TEXPTN rasptn) throw();
308extern ER               iras_tex(ID tskid, TEXPTN rasptn) throw();
309extern ER               dis_tex(void) throw();
310extern ER               ena_tex(void) throw();
311extern bool_t   sns_tex(void) throw();
312extern ER               ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
313
314/*
315 *  ƱŽü¡ŠÄÌ¿®µ¡Çœ
316 */
317extern ER_ID    acre_sem(const T_CSEM *pk_csem) throw();
318extern ER               del_sem(ID semid) throw();
319extern ER               sig_sem(ID semid) throw();
320extern ER               isig_sem(ID semid) throw();
321extern ER               wai_sem(ID semid) throw();
322extern ER               pol_sem(ID semid) throw();
323extern ER               twai_sem(ID semid, TMO tmout) throw();
324extern ER               ini_sem(ID semid) throw();
325extern ER               ref_sem(ID semid, T_RSEM *pk_rsem) throw();
326
327extern ER_ID    acre_flg(const T_CFLG *pk_cflg) throw();
328extern ER               del_flg(ID flgid) throw();
329extern ER               set_flg(ID flgid, FLGPTN setptn) throw();
330extern ER               iset_flg(ID flgid, FLGPTN setptn) throw();
331extern ER               clr_flg(ID flgid, FLGPTN clrptn) throw();
332extern ER               wai_flg(ID flgid, FLGPTN waiptn,
333                                                MODE wfmode, FLGPTN *p_flgptn) throw();
334extern ER               pol_flg(ID flgid, FLGPTN waiptn,
335                                                MODE wfmode, FLGPTN *p_flgptn) throw();
336extern ER               twai_flg(ID flgid, FLGPTN waiptn,
337                                                MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
338extern ER               ini_flg(ID flgid) throw();
339extern ER               ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
340
341extern ER_ID    acre_dtq(const T_CDTQ *pk_cdtq) throw();
342extern ER               del_dtq(ID dtqid) throw();
343extern ER               snd_dtq(ID dtqid, intptr_t data) throw();
344extern ER               psnd_dtq(ID dtqid, intptr_t data) throw();
345extern ER               ipsnd_dtq(ID dtqid, intptr_t data) throw();
346extern ER               tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
347extern ER               fsnd_dtq(ID dtqid, intptr_t data) throw();
348extern ER               ifsnd_dtq(ID dtqid, intptr_t data) throw();
349extern ER               rcv_dtq(ID dtqid, intptr_t *p_data) throw();
350extern ER               prcv_dtq(ID dtqid, intptr_t *p_data) throw();
351extern ER               trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
352extern ER               ini_dtq(ID dtqid) throw();
353extern ER               ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
354
355extern ER_ID    acre_pdq(const T_CPDQ *pk_cpdq) throw();
356extern ER               del_pdq(ID pdqid) throw();
357extern ER               snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
358extern ER               psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
359extern ER               ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
360extern ER               tsnd_pdq(ID pdqid, intptr_t data,
361                                                                                PRI datapri, TMO tmout) throw();
362extern ER               rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
363extern ER               prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
364extern ER               trcv_pdq(ID pdqid, intptr_t *p_data,
365                                                                                PRI *p_datapri, TMO tmout) throw();
366extern ER               ini_pdq(ID pdqid) throw();
367extern ER               ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
368
369extern ER_ID    acre_mbx(const T_CMBX *pk_cmbx) throw();
370extern ER               del_mbx(ID mbxid) throw();
371extern ER               snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
372extern ER               rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
373extern ER               prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
374extern ER               trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
375extern ER               ini_mbx(ID mbxid) throw();
376extern ER               ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
377
378/*
379 *  ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýµ¡Çœ
380 */
381extern ER_ID    acre_mpf(const T_CMPF *pk_cmpf) throw();
382extern ER               del_mpf(ID mpfid) throw();
383extern ER               get_mpf(ID mpfid, void **p_blk) throw();
384extern ER               pget_mpf(ID mpfid, void **p_blk) throw();
385extern ER               tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
386extern ER               rel_mpf(ID mpfid, void *blk) throw();
387extern ER               ini_mpf(ID mpfid) throw();
388extern ER               ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
389
390/*
391 *  »þŽÖŽÉÍýµ¡Çœ
392 */
393extern ER               get_tim(SYSTIM *p_systim) throw();
394extern ER               get_utm(SYSUTM *p_sysutm) throw();
395
396extern ER_ID    acre_cyc(const T_CCYC *pk_ccyc) throw();
397extern ER               del_cyc(ID cycid) throw();
398extern ER               sta_cyc(ID cycid) throw();
399extern ER               stp_cyc(ID cycid) throw();
400extern ER               ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
401
402extern ER_ID    acre_alm(const T_CALM *pk_calm) throw();
403extern ER               del_alm(ID almid) throw();
404extern ER               sta_alm(ID almid, RELTIM almtim) throw();
405extern ER               ista_alm(ID almid, RELTIM almtim) throw();
406extern ER               stp_alm(ID almid) throw();
407extern ER               istp_alm(ID almid) throw();
408extern ER               ref_alm(ID almid, T_RALM *pk_ralm) throw();
409
410/*
411 *  ¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
412 */
413extern ER               rot_rdq(PRI tskpri) throw();
414extern ER               irot_rdq(PRI tskpri) throw();
415extern ER               get_tid(ID *p_tskid) throw();
416extern ER               iget_tid(ID *p_tskid) throw();
417extern ER               loc_cpu(void) throw();
418extern ER               iloc_cpu(void) throw();
419extern ER               unl_cpu(void) throw();
420extern ER               iunl_cpu(void) throw();
421extern ER               dis_dsp(void) throw();
422extern ER               ena_dsp(void) throw();
423extern bool_t   sns_ctx(void) throw();
424extern bool_t   sns_loc(void) throw();
425extern bool_t   sns_dsp(void) throw();
426extern bool_t   sns_dpn(void) throw();
427extern bool_t   sns_ker(void) throw();
428extern ER               ext_ker(void) throw();
429
430/*
431 *  ³ä¹þ€ßŽÉÍýµ¡Çœ
432 */
433extern ER_ID    acre_isr(const T_CISR *pk_cisr) throw();
434extern ER               del_isr(ID isrid) throw();
435extern ER               dis_int(INTNO intno) throw();
436extern ER               ena_int(INTNO intno) throw();
437extern ER               chg_ipm(PRI intpri) throw();
438extern ER               get_ipm(PRI *p_intpri) throw();
439
440/*
441 *  CPUÎã³°ŽÉÍýµ¡Çœ
442 */
443extern bool_t   xsns_dpn(void *p_excinf) throw();
444extern bool_t   xsns_xpn(void *p_excinf) throw();
445
446#endif /* TOPPERS_MACRO_ONLY */
447
448/*
449 *  ¥ª¥Ö¥ž¥§¥¯¥È°À­€ÎÄêµÁ
450 */
451#define TA_ACT                  UINT_C(0x02)    /* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
452
453#define TA_TPRI                 UINT_C(0x01)    /* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
454#define TA_MPRI                 UINT_C(0x02)    /* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
455
456#define TA_WMUL                 UINT_C(0x02)    /* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
457#define TA_CLR                  UINT_C(0x04)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
458
459#define TA_STA                  UINT_C(0x02)    /* ŒþŽü¥Ï¥ó¥É¥é€òưºîŸõÂÖ€ÇÀžÀ® */
460
461#define TA_NONKERNEL    UINT_C(0x02)    /* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
462
463#define TA_ENAINT               UINT_C(0x01)    /* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
464#define TA_EDGE                 UINT_C(0x02)    /* ¥š¥Ã¥ž¥È¥ê¥¬ */
465
466/*
467 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Îưºî¥â¡Œ¥É€ÎÄêµÁ
468 */
469#define TWF_ORW                 UINT_C(0x01)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
470#define TWF_ANDW                UINT_C(0x02)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
471
472/*
473 *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
474 */
475#define TTS_RUN                 UINT_C(0x01)    /* ŒÂ¹ÔŸõÂÖ */
476#define TTS_RDY                 UINT_C(0x02)    /* ŒÂ¹Ô²ÄÇœŸõÂÖ */
477#define TTS_WAI                 UINT_C(0x04)    /* ÂÔ€ÁŸõÂÖ */
478#define TTS_SUS                 UINT_C(0x08)    /* ¶¯À©ÂÔ€ÁŸõÂÖ */
479#define TTS_WAS                 UINT_C(0x0c)    /* ÆóœÅÂÔ€ÁŸõÂÖ */
480#define TTS_DMT                 UINT_C(0x10)    /* µÙ»ßŸõÂÖ */
481
482#define TTW_SLP                 UINT_C(0x0001)  /* µ¯Ÿ²ÂÔ€Á */
483#define TTW_DLY                 UINT_C(0x0002)  /* »þŽÖ·Ð²áÂÔ€Á */
484#define TTW_SEM                 UINT_C(0x0004)  /* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
485#define TTW_FLG                 UINT_C(0x0008)  /* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
486#define TTW_SDTQ                UINT_C(0x0010)  /* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
487#define TTW_RDTQ                UINT_C(0x0020)  /* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
488#define TTW_SPDQ                UINT_C(0x0100)  /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
489#define TTW_RPDQ                UINT_C(0x0200)  /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
490#define TTW_MBX                 UINT_C(0x0040)  /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
491#define TTW_MPF                 UINT_C(0x2000)  /* žÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
492
493#define TTEX_ENA                UINT_C(0x01)    /* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
494#define TTEX_DIS                UINT_C(0x02)    /* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
495
496#define TCYC_STP                UINT_C(0x01)    /* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
497#define TCYC_STA                UINT_C(0x02)    /* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
498
499#define TALM_STP                UINT_C(0x01)    /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
500#define TALM_STA                UINT_C(0x02)    /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
501
502/*
503 *  €œ€ÎŸ€ÎÄê¿ô€ÎÄêµÁ
504 */
505#define TSK_SELF                0                       /* Œ«¥¿¥¹¥¯»ØÄê */
506#define TSK_NONE                0                       /* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
507
508#define TPRI_SELF               0                       /* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
509#define TPRI_INI                0                       /* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
510
511#define TIPM_ENAALL             0                       /* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœü */
512
513/*
514 *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
515 */
516
517/*
518 *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
519 */
520#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
521#define TOPPERS_SUPPORT_DIS_INT                 /* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
522#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
523
524#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
525#define TOPPERS_SUPPORT_ENA_INT                 /* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
526#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
527
528#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
529#define TOPPERS_SUPPORT_GET_UTM                 /* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
530#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
531
532#define TOPPERS_SUPPORT_DYNAMIC_CRE             /* ưŪÀžÀ®µ¡Çœ³ÈÄ¥ */
533
534/*
535 *  Í¥ÀèÅÙ€ÎÈϰÏ
536 */
537#define TMIN_TPRI               1                       /* ¥¿¥¹¥¯Í¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
538#define TMAX_TPRI               16                      /* ¥¿¥¹¥¯Í¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
539#define TMIN_DPRI               1                       /* ¥Ç¡Œ¥¿Í¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
540#define TMAX_DPRI               16                      /* ¥Ç¡Œ¥¿Í¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
541#define TMIN_MPRI               1                       /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
542#define TMAX_MPRI               16                      /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
543#define TMIN_ISRPRI             1                       /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـκǟ®ÃÍ */
544#define TMAX_ISRPRI             16                      /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـκÇÂçÃÍ */
545
546/*
547 *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
548 */
549#define TKERNEL_MAKER   UINT_C(0x0118)  /* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
550#define TKERNEL_PRID    UINT_C(0x0007)  /* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
551#define TKERNEL_SPVER   UINT_C(0xf517)  /* ¥«¡Œ¥Í¥ë»ÅÍ̀ΥСŒ¥ž¥ç¥óÈÖ¹æ */
552#define TKERNEL_PRVER   UINT_C(0x1092)  /* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
553
554/*
555 *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
556 */
557#define TMAX_ACTCNT             UINT_C(1)               /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
558#define TMAX_WUPCNT             UINT_C(1)               /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
559
560/*
561 *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
562 */
563#ifndef TBIT_TEXPTN                                     /* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
564#define TBIT_TEXPTN             (sizeof(TEXPTN) * CHAR_BIT)
565#endif /* TBIT_TEXPTN */
566
567#ifndef TBIT_FLGPTN                                     /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
568#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
569#endif /* TBIT_FLGPTN */
570
571/*
572 *  ¥á¥â¥êÎΰè³ÎÊ݀΀¿€á€Î¥Þ¥¯¥í
573 *
574 *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
575 *  €ë€³€È€ò²ŸÄꀷ€Æ€€€ë¡¥
576 */
577#ifndef TOPPERS_COUNT_SZ
578#define TOPPERS_COUNT_SZ(sz, unit)      (((sz) + (unit) - 1) / (unit))
579#endif /* TOPPERS_COUNT_SZ */
580#ifndef TOPPERS_ROUND_SZ
581#define TOPPERS_ROUND_SZ(sz, unit)      (((sz) + (unit) - 1) & ~((unit) - 1))
582#endif /* TOPPERS_ROUND_SZ */
583
584#define COUNT_STK_T(sz)         TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
585#define ROUND_STK_T(sz)         TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
586
587#define COUNT_MPF_T(blksz)      TOPPERS_COUNT_SZ(blksz, sizeof(MPF_T))
588#define ROUND_MPF_T(blksz)      TOPPERS_ROUND_SZ(blksz, sizeof(MPF_T))
589
590#define TSZ_DTQMB(dtqcnt)       (sizeof(intptr_t) * (dtqcnt))
591#define TCNT_DTQMB(dtqcnt)      TOPPERS_COUNT_SZ(TSZ_DTQMB(dtqcnt), sizeof(MB_T))
592
593#ifndef TSZ_PDQMB
594#define TSZ_PDQMB(pdqcnt)       (sizeof(intptr_t) * 3 * (pdqcnt))
595#endif /* TSZ_PDQMB */
596#define TCNT_PDQMB(pdqcnt)      TOPPERS_COUNT_SZ(TSZ_PDQMB(pdqcnt), sizeof(MB_T))
597
598#define TSZ_MPFMB(blkcnt)       (sizeof(uint_t) * (blkcnt))
599#define TCNT_MPFMB(blkcnt)      TOPPERS_COUNT_SZ(TSZ_MPFMB(blkcnt), sizeof(MB_T))
600
601/*
602 *  €œ€ÎŸ€Î¹œÀ®Äê¿ô
603 */
604#define TMAX_MAXSEM             UINT_MAX        /* ¥»¥Þ¥Õ¥©€ÎºÇÂç»ñž»¿ô€ÎºÇÂçÃÍ */
605
606#ifdef __cplusplus
607}
608#endif
609
610#endif /* TOPPERS_KERNEL_H */
詳しい使い方は TracBrowser を参照してください。