source: uKadecot/trunk/ssp/include/t_stddef.h@ 101

Last change on this file since 101 was 101, checked in by coas-nagasima, 9 years ago

TOPPERS/uKadecotのソースコードを追加

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain
File size: 8.5 KB
Line 
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-2009 by Embedded and Real-Time Systems Laboratory
8 * Graduate School of Information Science, Nagoya Univ., JAPAN
9 * Copyright (C) 2015 by Naoki Saito
10 * Nagoya Municipal Industrial Research Institute, JAPAN
11 *
12 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
13 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
14 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
15 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
16 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
17 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
18 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
19 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
20ƒƒ“ƒgi—˜—p
21 * ŽÒƒ}ƒjƒ…
22ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
23 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
24 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
25 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
26 * ‚ƁD
27 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
28ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
29ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
30 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
31 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
32 * •ñ‚·‚邱‚ƁD
33 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
34 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
35 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
36 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
37 * –Ɛӂ·‚邱‚ƁD
38 *
39 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
40 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
41 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
42 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
43 * ‚̐ӔC‚𕉂í‚È‚¢D
44 *
45 * @(#) $Id: t_stddef.h 101 2015-06-02 15:37:23Z coas-nagasima $
46 */
47
48/*
49 * TOPPERS‹¤’ʃwƒbƒ_ƒtƒ@ƒCƒ‹
50 *
51 * TOPPERSŠÖ˜A‚Ì‚·‚ׂẴ\[ƒXƒtƒ@ƒCƒ‹‚ŃCƒ“ƒNƒ‹[ƒh‚·‚ׂ«ƒwƒbƒ_ƒtƒ@ƒC
52 * ƒ‹DŠeŽí‚̃J[ƒlƒ‹‚âƒ\ƒtƒgƒEƒFƒA•”•i‚Å‹¤’Ê‚É—p‚¢‚邱‚Æ‚ð‘z’肵‚Ä‚¢
53 * ‚éDTOPPERS‚ÌŠeŽí‚̃J[ƒlƒ‹‚âƒ\ƒtƒgƒEƒFƒA•”•i‚Å‹¤’Ê‚É—p‚¢‚éƒf[ƒ^Œ^C
54 * ’萔Cƒ}ƒNƒ‚Ì’è‹`‚È‚Ç‚ðŠÜ‚ށD
55 *
56 * ƒAƒZƒ“ƒuƒŠŒ¾Œê‚̃\[ƒXƒtƒ@ƒCƒ‹‚©‚炱‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚鎞
57 * ‚́CTOPPERS_MACRO_ONLY‚ð’è‹`‚µ‚Ä‚¨‚­D‚±‚ê‚É‚æ‚èCƒ}ƒNƒ’è‹`ˆÈŠO‚ð
58 * œ‚­‚悤‚É‚È‚Á‚Ä‚¢‚éD
59 *
60 * ‚±‚̃tƒ@ƒCƒ‹‚ðƒCƒ“ƒNƒ‹[ƒh‚·‚é‘O‚ɃCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚¨‚­‚ׂ«ƒtƒ@ƒCƒ‹
61 * ‚Í‚È‚¢D
62 */
63
64#ifndef TOPPERS_T_STDDEF_H
65#define TOPPERS_T_STDDEF_H
66
67#ifdef __cplusplus
68extern "C" {
69#endif
70
71/*
72 * ƒ^[ƒQƒbƒgˆË‘¶•”
73 */
74#include "target_stddef.h"
75
76/*
77 * CŒ¾Œê/EC++‚Åthrow()‚ɑΏˆ‚·‚邽‚ß‚Ì’è‹`
78 */
79#if !defined(__cplusplus) || defined(__embedded_cplusplus)
80#define throw()
81#endif
82
83#ifndef TOPPERS_MACRO_ONLY
84
85/*
86 * ƒ^[ƒQƒbƒgˆË‘¶‚̃f[ƒ^Œ^‚̃}ƒNƒ‚̃fƒtƒHƒ‹ƒg’è‹`
87 */
88#ifndef TOPPERS_bool
89#define TOPPERS_bool int /* ƒu[ƒ‹Œ^ */
90#endif /* TOPPERS_bool */
91
92#ifndef TOPPERS_size
93#define TOPPERS_size uintptr_t /* ƒTƒCƒYŒ^ */
94#endif /* TOPPERS_size */
95
96#ifndef TOPPERS_fp
97struct TOPPERS_dummy_t { int TOPPERS_dummy_field; };
98typedef void (*TOPPERS_fp_t)(struct TOPPERS_dummy_t);
99#define TOPPERS_fp TOPPERS_fp_t /* ƒvƒƒOƒ‰ƒ€‚Ì‹N“®”Ô’n */
100#endif /* TOPPERS_fp */
101
102/*
103 * ‹¤’ʃf[ƒ^Œ^
104 */
105typedef TOPPERS_bool bool_t; /* ^‹U’l */
106
107typedef signed int int_t; /* Ž©‘R‚ȃTƒCƒY‚Ì•„†•t‚«®” */
108typedef unsigned int uint_t; /* Ž©‘R‚ȃTƒCƒY‚Ì•„†–³‚µ®” */
109
110typedef signed long long_t; /* ’·‚߂̃TƒCƒY‚Ì•„†•t‚«®” */
111typedef unsigned long ulong_t; /* ’·‚߂̃TƒCƒY‚Ì•„†–³‚µ®” */
112
113typedef int_t FN; /* ‹@”\ƒR[ƒh */
114typedef int_t ER; /* ƒGƒ‰[ƒR[ƒh */
115typedef int_t ID; /* ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ† */
116typedef uint_t ATR; /* ƒIƒuƒWƒFƒNƒg‚Ì‘®« */
117typedef uint_t STAT; /* ƒIƒuƒWƒFƒNƒg‚̏ó‘Ô */
118typedef uint_t MODE; /* ƒT[ƒrƒXƒR[ƒ‹‚Ì“®ìƒ‚[ƒh */
119typedef int_t PRI; /* —Dæ“x */
120typedef TOPPERS_size SIZE; /* ƒƒ‚ƒŠ—̈æ‚̃TƒCƒY */
121
122typedef int_t TMO; /* ƒ^ƒCƒ€ƒAƒEƒgŽw’è */
123typedef uint_t RELTIM; /* ‘Š‘ÎŽžŠÔ */
124typedef ulong_t SYSTIM; /* ƒVƒXƒeƒ€Žž */
125typedef ulong_t SYSUTM; /* «”\•]‰¿—pƒVƒXƒeƒ€Žž */
126
127typedef TOPPERS_fp FP; /* ƒvƒƒOƒ‰ƒ€‚Ì‹N“®”Ô’n */
128
129typedef int_t ER_BOOL; /* ƒGƒ‰[ƒR[ƒh‚Ü‚½‚͐^‹U’l */
130typedef int_t ER_ID; /* ƒGƒ‰[ƒR[ƒh‚Ü‚½‚ÍID”ԍ† */
131typedef int_t ER_UINT; /* ƒGƒ‰[ƒR[ƒh‚Ü‚½‚Í•„†–³‚µ®” */
132
133typedef uint32_t ACPTN; /* ƒAƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
134typedef struct acvct { /* ƒAƒNƒZƒX‹–‰ÂƒxƒNƒ^ */
135 ACPTN acptn1; /* ’ʏ푀ì1‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
136 ACPTN acptn2; /* ’ʏ푀ì2‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
137 ACPTN acptn3; /* ŠÇ—‘€ì‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
138 ACPTN acptn4; /* ŽQÆ‘€ì‚̃AƒNƒZƒX‹–‰Âƒpƒ^[ƒ“ */
139} ACVCT;
140
141#endif /* TOPPERS_MACRO_ONLY */
142
143/*
144 * ®”’萔‚ðì‚éƒ}ƒNƒ
145 */
146#ifndef UINT_C
147#define UINT_C(val) (val ## U) /* uint_tŒ^‚̒萔‚ðì‚éƒ}ƒNƒ */
148#endif /* UINT_C */
149
150#ifndef ULONG_C
151#define ULONG_C(val) (val ## UL) /* ulong_tŒ^‚̒萔‚ðì‚éƒ}ƒNƒ */
152#endif /* ULONG_C */
153
154/*
155 * ˆê”ʒ萔
156 */
157#ifndef NULL
158#define NULL 0 /* –³Œøƒ|ƒCƒ“ƒ^ */
159#endif /* NULL */
160
161#ifndef true
162#define true 1 /* ^ */
163#endif /* true */
164
165#ifndef false
166#define false 0 /* ‹U */
167#endif /* false */
168
169#define E_OK 0 /* ³íI—¹ */
170
171/*
172 * ƒƒCƒ“ƒGƒ‰[ƒR[ƒh
173 */
174#define E_SYS (-5) /* ƒVƒXƒeƒ€ƒGƒ‰[ */
175#define E_NOSPT (-9) /* –¢ƒTƒ|[ƒg‹@”\ */
176#define E_RSFN (-10) /* —\–ñ‹@”\ƒR[ƒh */
177#define E_RSATR (-11) /* —\–ñ‘®« */
178#define E_PAR (-17) /* ƒpƒ‰ƒ[ƒ^ƒGƒ‰[ */
179#define E_ID (-18) /* •s³ID”ԍ† */
180#define E_CTX (-25) /* ƒRƒ“ƒeƒLƒXƒgƒGƒ‰[ */
181#define E_MACV (-26) /* ƒƒ‚ƒŠƒAƒNƒZƒXˆá”½ */
182#define E_OACV (-27) /* ƒIƒuƒWƒFƒNƒgƒAƒNƒZƒXˆá”½ */
183#define E_ILUSE (-28) /* ƒT[ƒrƒXƒR[ƒ‹•s³Žg—p */
184#define E_NOMEM (-33) /* ƒƒ‚ƒŠ•s‘« */
185#define E_NOID (-34) /* ID”ԍ†•s‘« */
186#define E_NORES (-35) /* Ž‘Œ¹•s‘« */
187#define E_OBJ (-41) /* ƒIƒuƒWƒFƒNƒgó‘ÔƒGƒ‰[ */
188#define E_NOEXS (-42) /* ƒIƒuƒWƒFƒNƒg–¢¶¬ */
189#define E_QOVR (-43) /* ƒLƒ…
190[ƒCƒ“ƒOƒI[ƒo[ƒtƒ[ */
191#define E_RLWAI (-49) /* ‘Ò‚¿ó‘Ô‚Ì‹­§‰ðœ */
192#define E_TMOUT (-50) /* ƒ|[ƒŠƒ“ƒOŽ¸”s‚Ü‚½‚̓^ƒCƒ€ƒAƒEƒg */
193#define E_DLT (-51) /* ‘Ò‚¿ƒIƒuƒWƒFƒNƒg‚̍폜 */
194#define E_CLS (-52) /* ‘Ò‚¿ƒIƒuƒWƒFƒNƒg‚̏ó‘ԕω» */
195#define E_WBLK (-57) /* ƒmƒ“ƒuƒƒbƒLƒ“ƒOŽó•t‚¯ */
196#define E_BOVR (-58) /* ƒoƒbƒtƒ@ƒI[ƒo[ƒtƒ[ */
197
198/*
199 * ƒIƒuƒWƒFƒNƒg‘®«
200 */
201#define TA_NULL UINT_C(0) /* ƒIƒuƒWƒFƒNƒg‘®«‚ðŽw’肵‚È‚¢ */
202
203/*
204 * ƒ^ƒCƒ€ƒAƒEƒgŽw’è
205 */
206#define TMO_POL 0 /* ƒ|[ƒŠƒ“ƒO */
207#define TMO_FEVR (-1) /* ‰i‹v‘Ò‚¿ */
208#define TMO_NBLK (-2) /* ƒmƒ“ƒuƒƒbƒLƒ“ƒO */
209
210/*
211 * ƒAƒNƒZƒX‹–‰Âƒpƒ^[ƒ“
212 */
213#define TACP_KERNEL (0U) /* ƒJ[ƒlƒ‹ƒhƒƒCƒ“‚¾‚¯‚ɃAƒNƒZƒX‚ð‹–‰Â */
214#define TACP_SHARED (~0U) /* ‚·‚ׂẴhƒƒCƒ“‚©‚çƒAƒNƒZƒX‚ð‹–‰Â */
215
216/*
217 * Œ^‚ÉŠÖ‚·‚éî•ñ‚ðŽæ‚èo‚·‚½‚߂̃}ƒNƒ
218 */
219#ifndef offsetof
220#define offsetof(structure, field) ((uintptr_t) &(((structure *) 0)->field))
221#endif /* offsetof */
222
223#ifndef alignof
224#define alignof(type) offsetof(struct { char field1; type field2; }, field2)
225#endif /* alignof */
226
227#ifndef ALIGN_TYPE /* ƒAƒ‰ƒCƒ“ƒƒ“ƒg‚̃`ƒFƒbƒN */
228#define ALIGN_TYPE(addr, type) \
229 ((((uintptr_t)(addr)) & (alignof(type) - 1)) == 0U)
230#endif /* ALIGN_TYPE */
231
232/*
233 * assertƒ}ƒNƒ
234 */
235#undef assert
236#ifndef NDEBUG
237#define assert(exp) ((void)((exp) ? 0 : (TOPPERS_assert_fail(#exp, \
238 __FILE__, __LINE__), TOPPERS_assert_abort(), 0)))
239#else /* NDEBUG */
240#define assert(exp) ((void) 0)
241#endif /* NDEBUG */
242
243#ifdef __cplusplus
244}
245#endif
246
247/*
248 * ƒGƒ‰[ƒR[ƒh¶¬E•ª‰ðƒ}ƒNƒ
249 *
250 * ˆÈ‰º‚̃}ƒNƒ’è‹`‚́C•„†•t‚«®”‚ª2‚̕␔‚Å•\Œ»‚³‚ê‚Ä‚¨‚èC‰EƒVƒtƒg
251 * ‰‰ŽZŽqi>>j‚ªŽZpƒVƒtƒg‚³‚ê‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD‚»‚¤‚Å‚È‚¢ŠJ”­ŠÂ
252 * ‹«‚ł́Ctarget_stddef.h‚Å‚±‚ê‚ç‚Ì’è‹`‚ðã‘‚«‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢D
253 *
254 * MERCDƒ}ƒNƒ‚Ì’è‹`‚́CƒƒCƒ“ƒGƒ‰[ƒR[ƒh‚ª•‰‚Å‚ ‚邱‚Æ‚ð‰¼’è‚µ‚Ä‚¢‚éD
255 * ‚»‚¤‚Å‚È‚¢ê‡C2‚‚̒è‹`‚ªˆê’v‚µ‚È‚­‚È‚éD
256 */
257#ifndef ERCD
258#define ERCD(mercd, sercd) \
259 ((ER)(((((uint_t) (sercd))) << 8) | ((((uint_t) (mercd))) & 0xffU)))
260#endif /* ERCD */
261
262#ifndef MERCD
263#ifdef INT8_MAX
264#define MERCD(ercd) ((ER)((int8_t)(ercd)))
265#else /* INT8_MAX */
266#define MERCD(ercd) ((ER)((((uint_t) (ercd))) | ~0xffU))
267#endif /* INT8_MAX */
268#endif /* MERCD */
269
270#ifndef SERCD
271#define SERCD(ercd) ((ER)((ercd) >> 8))
272#endif /* SERCD */
273
274/*
275 * ‘Š‘ÎŽžŠÔiRELTIMj‚ÉŽw’è‚Å‚«‚éÅ‘å’l
276 */
277#if UINT_MAX < LONG_MAX
278#define TMAX_RELTIM ((RELTIM) UINT_MAX)
279#else /* UINT_MAX < LONG_MAX */
280#define TMAX_RELTIM ((RELTIM) LONG_MAX)
281#endif /* UINT_MAX < LONG_MAX */
282
283#endif /* TOPPERS_T_STDDEF_H */
Note: See TracBrowser for help on using the repository browser.