source: mypx/include/t_stddef.h @ 7

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 8.7 KB
 
1/*
2 *  TOPPERS Software
3 *      Toyohashi Open Platform for Embedded Real-Time Systems
4 *
5 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
6 *                              Toyohashi Univ. of Technology, JAPAN
7 *  Copyright (C) 2004-2012 by Embedded and Real-Time Systems Laboratory
8 *              Graduate School of Information Science, Nagoya Univ., JAPAN
9 *
10 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
11 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
12 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
13 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
14 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
15 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
16 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
17 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
18 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
19 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
20 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
21 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
22 *      €È¡¥
23 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
24 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
25 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
26 *        Êó¹ð€¹€ë€³€È¡¥
27 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
28 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
29 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
30 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
31 *      ÌÈÀÕ€¹€ë€³€È¡¥
32 *
33 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
34 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
35 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
36 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
37 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
38 *
39 *  @(#) $Id$
40 */
41
42/*
43 *              TOPPERS¶ŠḀ̈إåÀ¥Õ¥¡¥€¥ë
44 *
45 *  TOPPERSŽØÏ¢€Î€¹€Ù€Æ€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€Ç¥€¥ó¥¯¥ë¡Œ¥É€¹€Ù€­¥Ø¥Ã¥À¥Õ¥¡¥€
46 *  ¥ë¡¥³ÆŒï€Î¥«¡Œ¥Í¥ë€ä¥œ¥Õ¥È¥Š¥§¥¢ÉôÉʀǶŠÄÌ€ËÍÑ€€€ë€³€È€òÁÛÄꀷ€Æ€€
47 *  €ë¡¥TOPPERS€Î³ÆŒï€Î¥«¡Œ¥Í¥ë€ä¥œ¥Õ¥È¥Š¥§¥¢ÉôÉʀǶŠÄÌ€ËÍÑ€€€ë¥Ç¡Œ¥¿·¿¡€
48 *  Äê¿ô¡€¥Þ¥¯¥í€ÎÄêµÁ€Ê€É€òŽÞ€à¡¥
49 *
50 *  ¥¢¥»¥ó¥Ö¥êžÀžì€Î¥œ¡Œ¥¹¥Õ¥¡¥€¥ë€«€é€³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ë»þ
51 *  €Ï¡€TOPPERS_MACRO_ONLY€òÄêµÁ€·€Æ€ª€¯¡¥€³€ì€Ë€è€ê¡€¥Þ¥¯¥íÄêµÁ°Ê³°€ò
52 *  œü€¯€è€Š€Ë€Ê€Ã€Æ€€€ë¡¥
53 *
54 *  €³€Î¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É€¹€ëÁ°€Ë¥€¥ó¥¯¥ë¡Œ¥É€·€Æ€ª€¯€Ù€­¥Õ¥¡¥€¥ë
55 *  €Ï€Ê€€¡¥
56 */
57
58#ifndef TOPPERS_T_STDDEF_H
59#define TOPPERS_T_STDDEF_H
60
61#ifdef __cplusplus
62extern "C" {
63#endif
64
65/*
66 *  ¥¿¡Œ¥²¥Ã¥È°ÍžÉô
67 */
68#include "target_stddef.h"
69
70/*
71 *  CžÀžì/EC++€Çthrow()€ËÂМ耹€ë€¿€á€ÎÄêµÁ
72 */
73#if !defined(__cplusplus) || defined(__embedded_cplusplus)
74#define throw()
75#endif
76
77#ifndef TOPPERS_MACRO_ONLY
78
79/*
80 *  ¥¿¡Œ¥²¥Ã¥È°Íž€Î¥Ç¡Œ¥¿·¿€Î¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
81 */
82#ifndef TOPPERS_bool
83#define TOPPERS_bool    int                             /* ¥Ö¡Œ¥ë·¿ */
84#endif /* TOPPERS_bool */
85
86#ifndef TOPPERS_size
87#define TOPPERS_size    uintptr_t               /* ¥µ¥€¥º·¿ */
88#endif /* TOPPERS_size */
89
90#ifndef TOPPERS_fp
91struct TOPPERS_dummy_t { int TOPPERS_dummy_field; };
92typedef void                    (*TOPPERS_fp_t)(struct TOPPERS_dummy_t);
93#define TOPPERS_fp              TOPPERS_fp_t    /* ¥×¥í¥°¥é¥à€Îµ¯Æ°ÈÖÃÏ */
94#endif /* TOPPERS_fp */
95
96/*
97 *  ¶ŠḀ̈ǡŒ¥¿·¿
98 */
99typedef TOPPERS_bool    bool_t;         /* ¿¿µ¶ÃÍ */
100
101typedef signed int              int_t;          /* Œ«Á³€Ê¥µ¥€¥º€ÎÉ乿ÉÕ€­À°¿ô */
102typedef unsigned int    uint_t;         /* Œ«Á³€Ê¥µ¥€¥º€ÎÉä¹æÌµ€·À°¿ô */
103
104typedef signed long             long_t;         /* Ĺ€á€Î¥µ¥€¥º€ÎÉ乿ÉÕ€­À°¿ô */
105typedef unsigned long   ulong_t;        /* Ĺ€á€Î¥µ¥€¥º€ÎÉä¹æÌµ€·À°¿ô */
106
107typedef int_t                   FN;                     /* µ¡Çœ¥³¡Œ¥É */
108typedef int_t                   ER;                     /* ¥š¥é¡Œ¥³¡Œ¥É */
109typedef int_t                   ID;                     /* ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ */
110typedef uint_t                  ATR;            /* ¥ª¥Ö¥ž¥§¥¯¥È€Î°À­ */
111typedef uint_t                  STAT;           /* ¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖ */
112typedef uint_t                  MODE;           /* ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ë€Îưºî¥â¡Œ¥É */
113typedef int_t                   PRI;            /* Í¥ÀèÅÙ */
114typedef TOPPERS_size    SIZE;           /* ¥á¥â¥êÎΰè€Î¥µ¥€¥º */
115
116typedef int_t                   TMO;            /* ¥¿¥€¥à¥¢¥Š¥È»ØÄê */
117typedef uint_t                  RELTIM;         /* ÁêÂлþŽÖ */
118typedef ulong_t                 SYSTIM;         /* ¥·¥¹¥Æ¥à»þ¹ï */
119typedef ulong_t                 SYSUTM;         /* À­ÇœÉŸ²ÁÍÑ¥·¥¹¥Æ¥à»þ¹ï */
120
121typedef TOPPERS_fp              FP;                     /* ¥×¥í¥°¥é¥à€Îµ¯Æ°ÈÖÃÏ */
122
123typedef int_t                   ER_BOOL;        /* ¥š¥é¡Œ¥³¡Œ¥É€Þ€¿€Ï¿¿µ¶ÃÍ */
124typedef int_t                   ER_ID;          /* ¥š¥é¡Œ¥³¡Œ¥É€Þ€¿€ÏIDÈÖ¹æ */
125typedef int_t                   ER_UINT;        /* ¥š¥é¡Œ¥³¡Œ¥É€Þ€¿€ÏÉä¹æÌµ€·À°¿ô */
126
127typedef uintptr_t               MB_T;           /* ŽÉÍýÎΰè€ò³ÎÊÝ€¹€ë€¿€á€Î¥Ç¡Œ¥¿·¿ */
128
129typedef uint32_t                ACPTN;          /* ¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
130typedef struct acvct {                          /* ¥¢¥¯¥»¥¹µö²Ä¥Ù¥¯¥¿ */
131        ACPTN           acptn1;                         /* ÄÌŸïÁàºî1€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
132        ACPTN           acptn2;                         /* ÄÌŸïÁàºî2€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
133        ACPTN           acptn3;                         /* ŽÉÍýÁàºî€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
134        ACPTN           acptn4;                         /* »²ŸÈÁàºî€Î¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó */
135} ACVCT;
136
137#endif /* TOPPERS_MACRO_ONLY */
138
139/*
140 *  À°¿ôÄê¿ô€òºî€ë¥Þ¥¯¥í
141 */
142#ifndef UINT_C
143#define UINT_C(val)             (val ## U)              /* uint_t·¿€ÎÄê¿ô€òºî€ë¥Þ¥¯¥í */
144#endif /* UINT_C */
145
146#ifndef ULONG_C
147#define ULONG_C(val)    (val ## UL)             /* ulong_t·¿€ÎÄê¿ô€òºî€ë¥Þ¥¯¥í */
148#endif /* ULONG_C */
149
150/*
151 *  °ìÈÌÄê¿ô
152 */
153#ifndef NULL
154#define NULL            0                       /* ̵žú¥Ý¥€¥ó¥¿ */
155#endif /* NULL */
156
157#ifndef true
158#define true            1                       /* ¿¿ */
159#endif /* true */
160
161#ifndef false
162#define false           0                       /* µ¶ */
163#endif /* false */
164
165#define E_OK            0                       /* ÀµŸïœªÎ» */
166
167/*
168 *  ¥á¥€¥ó¥š¥é¡Œ¥³¡Œ¥É
169 */
170#define E_SYS           (-5)            /* ¥·¥¹¥Æ¥à¥š¥é¡Œ */
171#define E_NOSPT         (-9)            /* Ì€¥µ¥Ý¡Œ¥Èµ¡Çœ */
172#define E_RSFN          (-10)           /* ÍœÌóµ¡Çœ¥³¡Œ¥É */
173#define E_RSATR         (-11)           /* ÍœÌó°À­ */
174#define E_PAR           (-17)           /* ¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ */
175#define E_ID            (-18)           /* ÉÔÀµIDÈÖ¹æ */
176#define E_CTX           (-25)           /* ¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ */
177#define E_MACV          (-26)           /* ¥á¥â¥ê¥¢¥¯¥»¥¹°ãÈ¿ */
178#define E_OACV          (-27)           /* ¥ª¥Ö¥ž¥§¥¯¥È¥¢¥¯¥»¥¹°ãÈ¿ */
179#define E_ILUSE         (-28)           /* ¥µ¡Œ¥Ó¥¹¥³¡Œ¥ëÉÔÀµ»ÈÍÑ */
180#define E_NOMEM         (-33)           /* ¥á¥â¥êÉÔ­ */
181#define E_NOID          (-34)           /* IDÈÖ¹æÉÔ­ */
182#define E_NORES         (-35)           /* »ñž»ÉÔ­ */
183#define E_OBJ           (-41)           /* ¥ª¥Ö¥ž¥§¥¯¥ÈŸõÂÖ¥š¥é¡Œ */
184#define E_NOEXS         (-42)           /* ¥ª¥Ö¥ž¥§¥¯¥ÈÌ€ÀžÀ® */
185#define E_QOVR          (-43)           /* ¥­¥å¡Œ¥€¥ó¥°¥ª¡Œ¥Ð¡Œ¥Õ¥í¡Œ */
186#define E_RLWAI         (-49)           /* ÂÔ€ÁŸõÂրζ¯À©²òœü */
187#define E_TMOUT         (-50)           /* ¥Ý¡Œ¥ê¥ó¥°ŒºÇÔ€Þ€¿€Ï¥¿¥€¥à¥¢¥Š¥È */
188#define E_DLT           (-51)           /* ÂÔ€Á¥ª¥Ö¥ž¥§¥¯¥È€Îºïœü */
189#define E_CLS           (-52)           /* ÂÔ€Á¥ª¥Ö¥ž¥§¥¯¥È€ÎŸõÂÖÊѲœ */
190#define E_WBLK          (-57)           /* ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥°ŒõÉÕ€± */
191#define E_BOVR          (-58)           /* ¥Ð¥Ã¥Õ¥¡¥ª¡Œ¥Ð¡Œ¥Õ¥í¡Œ */
192
193/*
194 *  ¥ª¥Ö¥ž¥§¥¯¥È°À­
195 */
196#define TA_NULL         UINT_C(0)       /* ¥ª¥Ö¥ž¥§¥¯¥È°À­€ò»ØÄꀷ€Ê€€ */
197
198/*
199 *  ¥¿¥€¥à¥¢¥Š¥È»ØÄê
200 */
201#define TMO_POL         0                       /* ¥Ý¡Œ¥ê¥ó¥° */
202#define TMO_FEVR        (-1)            /* ±Êµ×ÂÔ€Á */
203#define TMO_NBLK        (-2)            /* ¥Î¥ó¥Ö¥í¥Ã¥­¥ó¥° */
204
205/*
206 *  ¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥ó
207 */
208#define TACP_KERNEL             (0U)    /* ¥«¡Œ¥Í¥ë¥É¥á¥€¥ó€À€±€Ë¥¢¥¯¥»¥¹€òµö²Ä */
209#define TACP_SHARED             (~0U)   /* €¹€Ù€Æ€Î¥É¥á¥€¥ó€«€é¥¢¥¯¥»¥¹€òµö²Ä */
210
211/*
212 *  ·¿€ËŽØ€¹€ëŸðÊó€òŒè€êœÐ€¹€¿€á€Î¥Þ¥¯¥í
213 *
214 *  °Ê²Œ€ÎALIGN_TYPE€ÎÄêµÁ€Ï¡€¥¢¥é¥€¥ó¥á¥ó¥È€Îñ°Ì€¬2€Î¶ÒŸè€Ç€¢€ë€³€È€ò
215 *  ²ŸÄꀷ€Æ€€€ë¡¥
216 */
217#ifndef offsetof
218#define offsetof(structure, field)      ((uintptr_t) &(((structure *) 0)->field))
219#endif /* offsetof */
220
221#ifndef alignof
222#define alignof(type)   offsetof(struct { char field1; type field2; }, field2)
223#endif /* alignof */
224
225#ifndef ALIGN_TYPE                              /* ¥¢¥é¥€¥ó¥á¥ó¥È€Î¥Á¥§¥Ã¥¯ */
226#define ALIGN_TYPE(addr, type) \
227                                                ((((uintptr_t)(addr)) & (alignof(type) - 1)) == 0U)
228#endif /* ALIGN_TYPE */
229
230/*
231 *  assert¥Þ¥¯¥í
232 */
233#undef assert
234#ifndef NDEBUG
235#define assert(exp)             ((void)((exp) ? 0 : (TOPPERS_assert_fail(#exp, \
236                                                        __FILE__, __LINE__), TOPPERS_assert_abort(), 0)))
237#else /* NDEBUG */
238#define assert(exp)             ((void) 0)
239#endif /* NDEBUG */
240
241#ifdef __cplusplus
242}
243#endif
244
245/*
246 *  ¥š¥é¡Œ¥³¡Œ¥ÉÀžÀ®¡ŠÊ¬²ò¥Þ¥¯¥í
247 *
248 *  °Ê²Œ€Î¥Þ¥¯¥íÄêµÁ€Ï¡€É乿ÉÕ€­À°¿ô€¬2€ÎÊä¿ô€ÇÉœžœ€µ€ì€Æ€ª€ê¡€±Š¥·¥Õ¥È
249 *  ±é»»»Ò¡Ê>>¡Ë€¬»»œÑ¥·¥Õ¥È€µ€ì€ë€³€È€ò²ŸÄꀷ€Æ€€€ë¡¥€œ€Š€Ç€Ê€€³«È¯ŽÄ
250 *  ¶­€Ç€Ï¡€target_stddef.h€Ç€³€ì€é€ÎÄêµÁ€òŸåœñ€­€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
251 *
252 *  MERCD¥Þ¥¯¥í€ÎÄêµÁ€Ï¡€¥á¥€¥ó¥š¥é¡Œ¥³¡Œ¥É€¬Éé€Ç€¢€ë€³€È€ò²ŸÄꀷ€Æ€€€ë¡¥
253 *  €œ€Š€Ç€Ê€€Ÿì¹ç¡€2€Ä€ÎÄêµÁ€¬°ìÃ×€·€Ê€¯€Ê€ë¡¥
254 */
255#ifndef ERCD
256#define ERCD(mercd, sercd) \
257                                ((ER)((((uint_t)(sercd)) << 8) | (((uint_t)(mercd)) & 0xffU)))
258#endif /* ERCD */
259
260#ifndef MERCD
261#ifdef INT8_MAX
262#define MERCD(ercd)             ((ER)((int8_t)(ercd)))
263#else /* INT8_MAX */
264#define MERCD(ercd)             ((ER)(((uint_t) ercd) | ~0xffU))
265#endif /* INT8_MAX */
266#endif /* MERCD */
267
268#ifndef SERCD
269#define SERCD(ercd)             ((ER)((ercd) >> 8))
270#endif /* SERCD */
271
272/*
273 *  ¥¢¥¯¥»¥¹µö²Ä¥Ñ¥¿¡Œ¥óÀžÀ®¥Þ¥¯¥í
274 */
275#define TACP(domid)             (1U << ((domid) - 1))   /* domid€À€±€Ë¥¢¥¯¥»¥¹€òµö²Ä */
276
277/*
278 *  ÁêÂлþŽÖ¡ÊRELTIM¡Ë€Ë»ØÄê€Ç€­€ëºÇÂçÃÍ
279 */
280#if UINT_MAX < LONG_MAX
281#define TMAX_RELTIM             ((RELTIM) UINT_MAX)
282#else /* UINT_MAX < LONG_MAX */
283#define TMAX_RELTIM             ((RELTIM) LONG_MAX)
284#endif /* UINT_MAX < LONG_MAX */
285
286#endif /* TOPPERS_T_STDDEF_H */
詳しい使い方は TracBrowser を参照してください。