posix-next API 0.1.0
Out-of-tree Zephyr POSIX module
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1/*
2 * Copyright The Zephyr Project Contributors
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
15#ifndef ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
16#define ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
17
18#include <zephyr/kernel.h>
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24#if !defined(_BLKCNT_T_DECLARED) && !defined(__blkcnt_t_defined)
26typedef long blkcnt_t;
27#define _BLKCNT_T_DECLARED
28#define __blkcnt_t_defined
29#endif
30
31#if !defined(_BLKSIZE_T_DECLARED) && !defined(__blksize_t_defined)
33typedef unsigned long blksize_t;
34#define _BLKSIZE_T_DECLARED
35#define __blksize_t_defined
36#endif
37
38#if !defined(_CLOCK_T_DECLARED) && !defined(__clock_t_defined)
40typedef unsigned long clock_t;
41#define _CLOCK_T_DECLARED
42#define __clock_t_defined
43#endif
44
45#if !defined(_CLOCKID_T_DECLARED) && !defined(__clockid_t_defined)
47typedef unsigned long clockid_t;
48#define _CLOCKID_T_DECLARED
49#define __clockid_t_defined
50#endif
51
52#if !defined(_DEV_T_DECLARED) && !defined(__dev_t_defined)
54typedef int dev_t;
55#define _DEV_T_DECLARED
56#define __dev_t_defined
57#endif
58
59/* the widths newlib and picolibc use, so the layout of struct statvfs cannot depend on which
60 * <sys/types.h> a translation unit saw first
61 */
62#if !defined(_FSBLKCNT_T_DECLARED) && !defined(__fsblkcnt_t_defined)
64typedef uint64_t fsblkcnt_t;
65#define _FSBLKCNT_T_DECLARED
66#define __fsblkcnt_t_defined
67#endif
68
69#if !defined(_FSFILCNT_T_DECLARED) && !defined(__fsfilcnt_t_defined)
71typedef uint32_t fsfilcnt_t;
72#define _FSFILCNT_T_DECLARED
73#define __fsfilcnt_t_defined
74#endif
75
76#if !defined(_GID_T_DECLARED) && !defined(__gid_t_defined)
78typedef unsigned short gid_t;
79#define _GID_T_DECLARED
80#define __gid_t_defined
81#endif
82
83#if !defined(_ID_T_DECLARED) && !defined(__id_t_defined)
85typedef int id_t;
86#define _ID_T_DECLARED
87#define __id_t_defined
88#endif
89
90#if !defined(_INO_T_DECLARED) && !defined(__ino_t_defined)
92typedef long ino_t;
93#define _INO_T_DECLARED
94#define __ino_t_defined
95#endif
96
97/* Maybe limit to when _XOPEN_SOURCE is defined? */
98#if !defined(_KEY_T_DECLARED) && !defined(__key_t_defined)
100typedef unsigned long key_t;
101#define _KEY_T_DECLARED
102#define __key_t_defined
103#endif
104
105#if !defined(_MODE_T_DECLARED) && !defined(__mode_t_defined)
107typedef int mode_t;
108#define _MODE_T_DECLARED
109#define __mode_t_defined
110#endif
111
112#if !defined(_NLINK_T_DECLARED) && !defined(__nlink_t_defined)
114typedef unsigned short nlink_t;
115#define _NLINK_T_DECLARED
116#define __nlink_t_defined
117#endif
118
119#if !defined(_OFF_T_DECLARED) && !defined(__off_t_defined)
121typedef long off_t;
122#define _OFF_T_DECLARED
123#define __off_t_defined
124#endif
125
126#if !defined(_PID_T_DECLARED) && !defined(__pid_t_defined)
128typedef int pid_t;
129#define _PID_T_DECLARED
130#define __pid_t_defined
131#endif
132
133/* size_t must be defined by the libc stddef.h */
134#include <stddef.h>
135
136#ifndef __SIZE_TYPE__
137#define __SIZE_TYPE__ unsigned long
138#endif
139
140#if !defined(_SSIZE_T_DECLARED) && !defined(__ssize_t_defined)
142#define unsigned signed /* parasoft-suppress MISRAC2012-RULE_20_4-a MISRAC2012-RULE_20_4-b */
143typedef __SIZE_TYPE__ ssize_t;
144#undef unsigned
145#define _SSIZE_T_DECLARED
146#define __ssize_t_defined
147#endif
148
149#if !defined(_SUSECONDS_T_DECLARED) && !defined(__suseconds_t_defined)
151typedef long suseconds_t;
152#define _SUSECONDS_T_DECLARED
153#define __suseconds_t_defined
154#endif
155
156/* time_t must be defined by the libc time.h */
157#include <time.h>
158
159#if __STDC_VERSION__ >= 201112L
160/* struct timespec must be defined in the libc time.h */
161#else
162/*
163 * there is a workaround needed for picolibc because it doesn't have guards around the definition
164 * of struct timespec
165 */
166#if !defined(_TIMESPEC_DECLARED) && !defined(__timespec_defined) && !defined(CONFIG_PICOLIBC)
172struct timespec {
173 time_t tv_sec;
174 long tv_nsec;
175};
176#define _TIMESPEC_DECLARED
177#define __timespec_defined
178#endif
179#endif
180
181#if !defined(_TIMER_T_DECLARED) && !defined(__timer_t_defined)
182typedef unsigned long timer_t;
183#define _TIMER_T_DECLARED
184#define __timer_t_defined
185#endif
186
187/* TODO: trace_attr_t, trace_event_id_t, trace_event_set_t, trace_id_t */
188
189#if !defined(_UID_T_DECLARED) && !defined(__uid_t_defined)
191typedef unsigned short uid_t;
192#define _UID_T_DECLARED
193#define __uid_t_defined
194#endif
195
196#if (_POSIX_C_SOURCE < 200809L) || defined(__DOXYGEN__)
197#if !defined(_USECONDS_T_DECLARED) && !defined(__useconds_t_defined)
199typedef unsigned long useconds_t;
200#define _USECONDS_T_DECLARED
201#define __useconds_t_defined
202#endif
203#endif
204
205#ifdef __cplusplus
206}
207#endif
208
209#include <sys/_pthreadtypes.h>
210
211#endif /* ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_ */
unsigned long timer_t
Opaque handle for a POSIX interval timer created with timer_create().
Definition posix_time.h:47
Time value with nanosecond resolution.
Definition aio.h:65
long tv_nsec
Nanoseconds [0, 999999999].
Definition aio.h:67
time_t tv_sec
Seconds.
Definition aio.h:66
POSIX time-of-day types and functions (<sys/time.h>)
int dev_t
Used for device IDs.
Definition types.h:54
long ino_t
Used for file serial numbers.
Definition types.h:92
unsigned long useconds_t
Used for time in microseconds (obsolescent).
Definition types.h:199
int pid_t
Used for process IDs and process group IDs.
Definition types.h:128
int id_t
Used as a general identifier; can contain at least a pid_t, uid_t, or gid_t.
Definition types.h:85
unsigned short gid_t
Used for group IDs.
Definition types.h:78
unsigned long clock_t
Used for system times in clock ticks or CLOCKS_PER_SEC.
Definition types.h:40
uint64_t fsblkcnt_t
Used for file system block counts.
Definition types.h:64
unsigned long blksize_t
Used for block sizes.
Definition types.h:33
unsigned long clockid_t
Used for clock ID type in the clock and timer functions.
Definition types.h:47
unsigned short uid_t
Used for user IDs.
Definition types.h:191
int mode_t
Used for file attributes.
Definition types.h:107
unsigned short nlink_t
Used for link counts.
Definition types.h:114
unsigned long key_t
Used for XSI interprocess communication.
Definition types.h:100
long blkcnt_t
Used for file block counts.
Definition types.h:26
uint32_t fsfilcnt_t
Used for file system file counts.
Definition types.h:71
long suseconds_t
Used for time in microseconds.
Definition types.h:151
long off_t
Used for file sizes and offsets.
Definition types.h:121