source: extension/messagebuf/include/kernel.h

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 17.4 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_rmbf {
178        ID              stskid;         /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎÁ÷¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
179                                                   €ÎIDÈÖ¹æ */
180        ID              rtskid;         /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€ÎŒõ¿®ÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯
181                                                   €ÎIDÈÖ¹æ */
182        uint_t  smbfcnt;        /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎΰè€Ë³ÊÇŒ€µ€ì€Æ€€€ë¥á¥Ã
183                                                   ¥»¡Œ¥ž€Î¿ô */
184        SIZE    fmbfsz;         /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡ŽÉÍýÎΰèÃæ€Î¶õ€­Îΰè€Î¥µ¥€¥º */
185} T_RMBF;
186
187typedef struct t_rmpf {
188        ID              wtskid;         /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ÎÂÔ€Á¹ÔÎó€ÎÀèÆ¬€Î¥¿¥¹¥¯€Î
189                                                   IDÈÖ¹æ */
190        uint_t  fblkcnt;        /* žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€Î¶õ€­¥á¥â¥êÎΰè€Ë³ä€ê
191                                                   ÉÕ€±€ë€³€È€¬€Ç€­€ëžÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î¿ô */
192} T_RMPF;
193
194typedef struct t_rcyc {
195        STAT    cycstat;        /* ŒþŽü¥Ï¥ó¥É¥é€ÎưºîŸõÂÖ */
196        RELTIM  lefttim;        /* Œ¡€ËŒþŽü¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂлþŽÖ */
197} T_RCYC;
198
199typedef struct t_ralm {
200        STAT    almstat;        /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎưºîŸõÂÖ */
201        RELTIM  lefttim;        /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€òµ¯Æ°€¹€ë»þ¹ï€Þ€Ç€ÎÁêÂлþŽÖ */
202} T_RALM;
203
204/*
205 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€ÎÀëžÀ
206 */
207
208/*
209 *  ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
210 */
211extern ER               act_tsk(ID tskid) throw();
212extern ER               iact_tsk(ID tskid) throw();
213extern ER_UINT  can_act(ID tskid) throw();
214extern ER               ext_tsk(void) throw();
215extern ER               ter_tsk(ID tskid) throw();
216extern ER               chg_pri(ID tskid, PRI tskpri) throw();
217extern ER               get_pri(ID tskid, PRI *p_tskpri) throw();
218extern ER               get_inf(intptr_t *p_exinf) throw();
219extern ER               ref_tsk(ID tskid, T_RTSK *pk_rtsk) throw();
220
221/*
222 *  ¥¿¥¹¥¯ÉÕ°ƱŽüµ¡Çœ
223 */
224extern ER               slp_tsk(void) throw();
225extern ER               tslp_tsk(TMO tmout) throw();
226extern ER               wup_tsk(ID tskid) throw();
227extern ER               iwup_tsk(ID tskid) throw();
228extern ER_UINT  can_wup(ID tskid) throw();
229extern ER               rel_wai(ID tskid) throw();
230extern ER               irel_wai(ID tskid) throw();
231extern ER               sus_tsk(ID tskid) throw();
232extern ER               rsm_tsk(ID tskid) throw();
233extern ER               dly_tsk(RELTIM dlytim) throw();
234
235/*
236 *  ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
237 */
238extern ER               ras_tex(ID tskid, TEXPTN rasptn) throw();
239extern ER               iras_tex(ID tskid, TEXPTN rasptn) throw();
240extern ER               dis_tex(void) throw();
241extern ER               ena_tex(void) throw();
242extern bool_t   sns_tex(void) throw();
243extern ER               ref_tex(ID tskid, T_RTEX *pk_rtex) throw();
244
245/*
246 *  ƱŽü¡ŠÄÌ¿®µ¡Çœ
247 */
248extern ER               sig_sem(ID semid) throw();
249extern ER               isig_sem(ID semid) throw();
250extern ER               wai_sem(ID semid) throw();
251extern ER               pol_sem(ID semid) throw();
252extern ER               twai_sem(ID semid, TMO tmout) throw();
253extern ER               ini_sem(ID semid) throw();
254extern ER               ref_sem(ID semid, T_RSEM *pk_rsem) throw();
255
256extern ER               set_flg(ID flgid, FLGPTN setptn) throw();
257extern ER               iset_flg(ID flgid, FLGPTN setptn) throw();
258extern ER               clr_flg(ID flgid, FLGPTN clrptn) throw();
259extern ER               wai_flg(ID flgid, FLGPTN waiptn,
260                                                MODE wfmode, FLGPTN *p_flgptn) throw();
261extern ER               pol_flg(ID flgid, FLGPTN waiptn,
262                                                MODE wfmode, FLGPTN *p_flgptn) throw();
263extern ER               twai_flg(ID flgid, FLGPTN waiptn,
264                                                MODE wfmode, FLGPTN *p_flgptn, TMO tmout) throw();
265extern ER               ini_flg(ID flgid) throw();
266extern ER               ref_flg(ID flgid, T_RFLG *pk_rflg) throw();
267
268extern ER               snd_dtq(ID dtqid, intptr_t data) throw();
269extern ER               psnd_dtq(ID dtqid, intptr_t data) throw();
270extern ER               ipsnd_dtq(ID dtqid, intptr_t data) throw();
271extern ER               tsnd_dtq(ID dtqid, intptr_t data, TMO tmout) throw();
272extern ER               fsnd_dtq(ID dtqid, intptr_t data) throw();
273extern ER               ifsnd_dtq(ID dtqid, intptr_t data) throw();
274extern ER               rcv_dtq(ID dtqid, intptr_t *p_data) throw();
275extern ER               prcv_dtq(ID dtqid, intptr_t *p_data) throw();
276extern ER               trcv_dtq(ID dtqid, intptr_t *p_data, TMO tmout) throw();
277extern ER               ini_dtq(ID dtqid) throw();
278extern ER               ref_dtq(ID dtqid, T_RDTQ *pk_rdtq) throw();
279
280extern ER               snd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
281extern ER               psnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
282extern ER               ipsnd_pdq(ID pdqid, intptr_t data, PRI datapri) throw();
283extern ER               tsnd_pdq(ID pdqid, intptr_t data,
284                                                                                PRI datapri, TMO tmout) throw();
285extern ER               rcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
286extern ER               prcv_pdq(ID pdqid, intptr_t *p_data, PRI *p_datapri) throw();
287extern ER               trcv_pdq(ID pdqid, intptr_t *p_data,
288                                                                                PRI *p_datapri, TMO tmout) throw();
289extern ER               ini_pdq(ID pdqid) throw();
290extern ER               ref_pdq(ID pdqid, T_RPDQ *pk_rpdq) throw();
291
292extern ER               snd_mbx(ID mbxid, T_MSG *pk_msg) throw();
293extern ER               rcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
294extern ER               prcv_mbx(ID mbxid, T_MSG **ppk_msg) throw();
295extern ER               trcv_mbx(ID mbxid, T_MSG **ppk_msg, TMO tmout) throw();
296extern ER               ini_mbx(ID mbxid) throw();
297extern ER               ref_mbx(ID mbxid, T_RMBX *pk_rmbx) throw();
298
299extern ER               snd_mbf(ID mbfid, const void *msg, uint_t msgsz) throw();
300extern ER               psnd_mbf(ID mbfid, const void *msg, uint_t msgsz) throw();
301extern ER               tsnd_mbf(ID mbfid, const void *msg,
302                                                                                uint_t msgsz, TMO tmout) throw();
303extern ER_UINT  rcv_mbf(ID mbfid, void *msg) throw();
304extern ER_UINT  prcv_mbf(ID mbfid, void *msg) throw();
305extern ER_UINT  trcv_mbf(ID mbfid, void *msg, TMO tmout) throw();
306extern ER               ini_mbf(ID mbfid) throw();
307extern ER               ref_mbf(ID mbfid, T_RMBF *pk_rmbf) throw();
308
309/*
310 *  ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýµ¡Çœ
311 */
312extern ER               get_mpf(ID mpfid, void **p_blk) throw();
313extern ER               pget_mpf(ID mpfid, void **p_blk) throw();
314extern ER               tget_mpf(ID mpfid, void **p_blk, TMO tmout) throw();
315extern ER               rel_mpf(ID mpfid, void *blk) throw();
316extern ER               ini_mpf(ID mpfid) throw();
317extern ER               ref_mpf(ID mpfid, T_RMPF *pk_rmpf) throw();
318
319/*
320 *  »þŽÖŽÉÍýµ¡Çœ
321 */
322extern ER               get_tim(SYSTIM *p_systim) throw();
323extern ER               get_utm(SYSUTM *p_sysutm) throw();
324
325extern ER               sta_cyc(ID cycid) throw();
326extern ER               stp_cyc(ID cycid) throw();
327extern ER               ref_cyc(ID cycid, T_RCYC *pk_rcyc) throw();
328
329extern ER               sta_alm(ID almid, RELTIM almtim) throw();
330extern ER               ista_alm(ID almid, RELTIM almtim) throw();
331extern ER               stp_alm(ID almid) throw();
332extern ER               istp_alm(ID almid) throw();
333extern ER               ref_alm(ID almid, T_RALM *pk_ralm) throw();
334
335/*
336 *  ¥·¥¹¥Æ¥àŸõÂÖŽÉÍýµ¡Çœ
337 */
338extern ER               rot_rdq(PRI tskpri) throw();
339extern ER               irot_rdq(PRI tskpri) throw();
340extern ER               get_tid(ID *p_tskid) throw();
341extern ER               iget_tid(ID *p_tskid) throw();
342extern ER               loc_cpu(void) throw();
343extern ER               iloc_cpu(void) throw();
344extern ER               unl_cpu(void) throw();
345extern ER               iunl_cpu(void) throw();
346extern ER               dis_dsp(void) throw();
347extern ER               ena_dsp(void) throw();
348extern bool_t   sns_ctx(void) throw();
349extern bool_t   sns_loc(void) throw();
350extern bool_t   sns_dsp(void) throw();
351extern bool_t   sns_dpn(void) throw();
352extern bool_t   sns_ker(void) throw();
353extern ER               ext_ker(void) throw();
354
355/*
356 *  ³ä¹þ€ßŽÉÍýµ¡Çœ
357 */
358extern ER               dis_int(INTNO intno) throw();
359extern ER               ena_int(INTNO intno) throw();
360extern ER               chg_ipm(PRI intpri) throw();
361extern ER               get_ipm(PRI *p_intpri) throw();
362
363/*
364 *  CPUÎã³°ŽÉÍýµ¡Çœ
365 */
366extern bool_t   xsns_dpn(void *p_excinf) throw();
367extern bool_t   xsns_xpn(void *p_excinf) throw();
368
369#endif /* TOPPERS_MACRO_ONLY */
370
371/*
372 *  ¥ª¥Ö¥ž¥§¥¯¥È°À­€ÎÄêµÁ
373 */
374#define TA_ACT                  UINT_C(0x02)    /* ¥¿¥¹¥¯€òµ¯Æ°€µ€ì€¿ŸõÂÖ€ÇÀžÀ® */
375
376#define TA_TPRI                 UINT_C(0x01)    /* ¥¿¥¹¥¯€ÎÂÔ€Á¹ÔÎó€òÍ¥ÀèÅÙœç€Ë */
377#define TA_MPRI                 UINT_C(0x02)    /* ¥á¥Ã¥»¡Œ¥ž¥­¥å¡Œ€òÍ¥ÀèÅÙœç€Ë */
378
379#define TA_WMUL                 UINT_C(0x02)    /* Ê£¿ô€ÎÂÔ€Á¥¿¥¹¥¯ */
380#define TA_CLR                  UINT_C(0x04)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥¯¥ê¥¢»ØÄê */
381
382#define TA_STA                  UINT_C(0x02)    /* ŒþŽü¥Ï¥ó¥É¥é€òưºîŸõÂÖ€ÇÀžÀ® */
383
384#define TA_NONKERNEL    UINT_C(0x02)    /* ¥«¡Œ¥Í¥ëŽÉÍý³°€Î³ä¹þ€ß */
385
386#define TA_ENAINT               UINT_C(0x01)    /* ³ä¹þ€ßÍ×µá¶Ø»ß¥Õ¥é¥°€ò¥¯¥ê¥¢ */
387#define TA_EDGE                 UINT_C(0x02)    /* ¥š¥Ã¥ž¥È¥ê¥¬ */
388
389/*
390 *  ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Îưºî¥â¡Œ¥É€ÎÄêµÁ
391 */
392#define TWF_ORW                 UINT_C(0x01)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎORÂÔ€Á */
393#define TWF_ANDW                UINT_C(0x02)    /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎANDÂÔ€Á */
394
395/*
396 *  ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ€ÎÄêµÁ
397 */
398#define TTS_RUN                 UINT_C(0x01)    /* ŒÂ¹ÔŸõÂÖ */
399#define TTS_RDY                 UINT_C(0x02)    /* ŒÂ¹Ô²ÄÇœŸõÂÖ */
400#define TTS_WAI                 UINT_C(0x04)    /* ÂÔ€ÁŸõÂÖ */
401#define TTS_SUS                 UINT_C(0x08)    /* ¶¯À©ÂÔ€ÁŸõÂÖ */
402#define TTS_WAS                 UINT_C(0x0c)    /* ÆóœÅÂÔ€ÁŸõÂÖ */
403#define TTS_DMT                 UINT_C(0x10)    /* µÙ»ßŸõÂÖ */
404
405#define TTW_SLP                 UINT_C(0x0001)  /* µ¯Ÿ²ÂÔ€Á */
406#define TTW_DLY                 UINT_C(0x0002)  /* »þŽÖ·Ð²áÂÔ€Á */
407#define TTW_SEM                 UINT_C(0x0004)  /* ¥»¥Þ¥Õ¥©€Î»ñž»³ÍÆÀÂÔ€Á */
408#define TTW_FLG                 UINT_C(0x0008)  /* ¥€¥Ù¥ó¥È¥Õ¥é¥°ÂÔ€Á */
409#define TTW_SDTQ                UINT_C(0x0010)  /* ¥Ç¡Œ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
410#define TTW_RDTQ                UINT_C(0x0020)  /* ¥Ç¡Œ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
411#define TTW_SPDQ                UINT_C(0x0100)  /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€Ø€ÎÁ÷¿®ÂÔ€Á */
412#define TTW_RPDQ                UINT_C(0x0200)  /* Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€«€é€ÎŒõ¿®ÂÔ€Á */
413#define TTW_MBX                 UINT_C(0x0040)  /* ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€«€é€ÎŒõ¿®ÂÔ€Á */
414#define TTW_SMBF                UINT_C(0x0400)  /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€Ø€ÎÁ÷¿®ÂÔ€Á */
415#define TTW_RMBF                UINT_C(0x0800)  /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡€«€é€ÎŒõ¿®ÂÔ€Á */
416#define TTW_MPF                 UINT_C(0x2000)  /* žÇÄêĹ¥á¥â¥ê¥Ö¥í¥Ã¥¯€Î³ÍÆÀÂÔ€Á */
417
418#define TTEX_ENA                UINT_C(0x01)    /* ¥¿¥¹¥¯Îã³°œèÍýµö²ÄŸõÂÖ */
419#define TTEX_DIS                UINT_C(0x02)    /* ¥¿¥¹¥¯Îã³°œèÍý¶Ø»ßŸõÂÖ */
420
421#define TCYC_STP                UINT_C(0x01)    /* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
422#define TCYC_STA                UINT_C(0x02)    /* ŒþŽü¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
423
424#define TALM_STP                UINT_C(0x01)    /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€Ê€€ */
425#define TALM_STA                UINT_C(0x02)    /* ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€¬Æ°ºî€·€Æ€€€ë */
426
427/*
428 *  €œ€ÎŸ€ÎÄê¿ô€ÎÄêµÁ
429 */
430#define TSK_SELF                0                       /* Œ«¥¿¥¹¥¯»ØÄê */
431#define TSK_NONE                0                       /* ³ºÅö€¹€ë¥¿¥¹¥¯€¬€Ê€€ */
432
433#define TPRI_SELF               0                       /* Œ«¥¿¥¹¥¯€Î¥Ù¡Œ¥¹Í¥ÀèÅÙ */
434#define TPRI_INI                0                       /* ¥¿¥¹¥¯€Îµ¯Æ°»þÍ¥ÀèÅÙ */
435
436#define TIPM_ENAALL             0                       /* ³ä¹þ€ßÍ¥ÀèÅÙ¥Þ¥¹¥¯Á޲òœü */
437
438/*
439 *  ¹œÀ®Äê¿ô€È¥Þ¥¯¥í
440 */
441
442/*
443 *  ¥µ¥Ý¡Œ¥È€¹€ëµ¡Çœ
444 */
445#ifdef TOPPERS_TARGET_SUPPORT_DIS_INT
446#define TOPPERS_SUPPORT_DIS_INT                 /* dis_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
447#endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */
448
449#ifdef TOPPERS_TARGET_SUPPORT_ENA_INT
450#define TOPPERS_SUPPORT_ENA_INT                 /* ena_int€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
451#endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */
452
453#ifdef TOPPERS_TARGET_SUPPORT_GET_UTM
454#define TOPPERS_SUPPORT_GET_UTM                 /* get_utm€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€ë */
455#endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */
456
457#define TOPPERS_SUPPORT_MESSAGEBUF              /* ¥á¥Ã¥»¡Œ¥ž¥Ð¥Ã¥Õ¥¡µ¡Çœ³ÈÄ¥ */
458
459/*
460 *  Í¥ÀèÅÙ€ÎÈϰÏ
461 */
462#define TMIN_TPRI               1                       /* ¥¿¥¹¥¯Í¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
463#define TMAX_TPRI               16                      /* ¥¿¥¹¥¯Í¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
464#define TMIN_DPRI               1                       /* ¥Ç¡Œ¥¿Í¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
465#define TMAX_DPRI               16                      /* ¥Ç¡Œ¥¿Í¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
466#define TMIN_MPRI               1                       /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـκǟ®Ã͡ʺǹâÃÍ¡Ë*/
467#define TMAX_MPRI               16                      /* ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـκÇÂçÃ͡ʺÇÄãÃÍ¡Ë*/
468#define TMIN_ISRPRI             1                       /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـκǟ®ÃÍ */
469#define TMAX_ISRPRI             16                      /* ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـκÇÂçÃÍ */
470
471/*
472 *  ¥Ð¡Œ¥ž¥ç¥óŸðÊó
473 */
474#define TKERNEL_MAKER   UINT_C(0x0118)  /* ¥«¡Œ¥Í¥ë€Î¥á¡Œ¥«¡Œ¥³¡Œ¥É */
475#define TKERNEL_PRID    UINT_C(0x0007)  /* ¥«¡Œ¥Í¥ë€ÎŒ±ÊÌÈÖ¹æ */
476#define TKERNEL_SPVER   UINT_C(0xf517)  /* ¥«¡Œ¥Í¥ë»ÅÍ̀ΥСŒ¥ž¥ç¥óÈÖ¹æ */
477#define TKERNEL_PRVER   UINT_C(0x1092)  /* ¥«¡Œ¥Í¥ë€Î¥Ð¡Œ¥ž¥ç¥óÈÖ¹æ */
478
479/*
480 *  ¥­¥å¡Œ¥€¥ó¥°²ó¿ô€ÎºÇÂçÃÍ
481 */
482#define TMAX_ACTCNT             UINT_C(1)               /* µ¯Æ°Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
483#define TMAX_WUPCNT             UINT_C(1)               /* µ¯Ÿ²Í׵ᥭ¥å¡Œ¥€¥ó¥°¿ô€ÎºÇÂçÃÍ */
484
485/*
486 *  ¥Ó¥Ã¥È¥Ñ¥¿¡Œ¥ó€Î¥Ó¥Ã¥È¿ô
487 */
488#ifndef TBIT_TEXPTN                                     /* ¥¿¥¹¥¯Îã³°Í×°ø€Î¥Ó¥Ã¥È¿ô */
489#define TBIT_TEXPTN             (sizeof(TEXPTN) * CHAR_BIT)
490#endif /* TBIT_TEXPTN */
491
492#ifndef TBIT_FLGPTN                                     /* ¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¥Ó¥Ã¥È¿ô */
493#define TBIT_FLGPTN             (sizeof(FLGPTN) * CHAR_BIT)
494#endif /* TBIT_FLGPTN */
495
496/*
497 *  ¥á¥â¥êÎΰè³ÎÊ݀΀¿€á€Î¥Þ¥¯¥í
498 *
499 *  °Ê²Œ€ÎTOPPERS_COUNT_SZ€ÈTOPPERS_ROUND_SZ€ÎÄêµÁ€Ï¡€unit€¬2€Î¶ÒŸè€Ç€¢
500 *  €ë€³€È€ò²ŸÄꀷ€Æ€€€ë¡¥
501 */
502#ifndef TOPPERS_COUNT_SZ
503#define TOPPERS_COUNT_SZ(sz, unit)      (((sz) + (unit) - 1) / (unit))
504#endif /* TOPPERS_COUNT_SZ */
505#ifndef TOPPERS_ROUND_SZ
506#define TOPPERS_ROUND_SZ(sz, unit)      (((sz) + (unit) - 1) & ~((unit) - 1))
507#endif /* TOPPERS_ROUND_SZ */
508
509#define COUNT_STK_T(sz)         TOPPERS_COUNT_SZ(sz, sizeof(STK_T))
510#define ROUND_STK_T(sz)         TOPPERS_ROUND_SZ(sz, sizeof(STK_T))
511
512#define TSZ_MBFMB(msgcnt, msgsz) \
513        ((msgcnt) * (sizeof(uint_t) + TOPPERS_ROUND_SZ(msgsz, sizeof(uint_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 を参照してください。