source: extension/mutex/include/kernel.h @ 7

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

TOPPERS/ASP 1.9.1

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