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
17#ifndef ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
18#define ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_
19
20#include <zephyr/kernel.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#if !defined(_BLKCNT_T_DECLARED) && !defined(__blkcnt_t_defined)
28typedef long blkcnt_t;
29#define _BLKCNT_T_DECLARED
30#define __blkcnt_t_defined
31#endif
32
33#if !defined(_BLKSIZE_T_DECLARED) && !defined(__blksize_t_defined)
35typedef unsigned long blksize_t;
36#define _BLKSIZE_T_DECLARED
37#define __blksize_t_defined
38#endif
39
40#if !defined(_CLOCK_T_DECLARED) && !defined(__clock_t_defined)
42typedef unsigned long clock_t;
43#define _CLOCK_T_DECLARED
44#define __clock_t_defined
45#endif
46
47#if !defined(_CLOCKID_T_DECLARED) && !defined(__clockid_t_defined)
49typedef unsigned long clockid_t;
50#define _CLOCKID_T_DECLARED
51#define __clockid_t_defined
52#endif
53
54#if !defined(_DEV_T_DECLARED) && !defined(__dev_t_defined)
56typedef int dev_t;
57#define _DEV_T_DECLARED
58#define __dev_t_defined
59#endif
60
61#if !defined(_FSBLKCNT_T_DECLARED) && !defined(__fsblkcnt_t_defined)
63typedef unsigned long fsblkcnt_t;
64#define _FSBLKCNT_T_DECLARED
65#define __fsblkcnt_t_defined
66#endif
67
68#if !defined(_FSFILCNT_T_DECLARED) && !defined(__fsfilcnt_t_defined)
70typedef unsigned long fsfilcnt_t;
71#define _FSFILCNT_T_DECLARED
72#define __fsfilcnt_t_defined
73#endif
74
75#if !defined(_GID_T_DECLARED) && !defined(__gid_t_defined)
77typedef unsigned short gid_t;
78#define _GID_T_DECLARED
79#define __gid_t_defined
80#endif
81
82#if !defined(_INO_T_DECLARED) && !defined(__ino_t_defined)
84typedef long ino_t;
85#define _INO_T_DECLARED
86#define __ino_t_defined
87#endif
88
89/* Maybe limit to when _XOPEN_SOURCE is defined? */
90#if !defined(_KEY_T_DECLARED) && !defined(__key_t_defined)
92typedef unsigned long key_t;
93#define _KEY_T_DECLARED
94#define __key_t_defined
95#endif
96
97#if !defined(_MODE_T_DECLARED) && !defined(__mode_t_defined)
99typedef int mode_t;
100#define _MODE_T_DECLARED
101#define __mode_t_defined
102#endif
103
104#if !defined(_NLINK_T_DECLARED) && !defined(__nlink_t_defined)
106typedef unsigned short nlink_t;
107#define _NLINK_T_DECLARED
108#define __nlink_t_defined
109#endif
110
111#if !defined(_OFF_T_DECLARED) && !defined(__off_t_defined)
113typedef long off_t;
114#define _OFF_T_DECLARED
115#define __off_t_defined
116#endif
117
118#if !defined(_PID_T_DECLARED) && !defined(__pid_t_defined)
120typedef int pid_t;
121#define _PID_T_DECLARED
122#define __pid_t_defined
123#endif
124
125/* size_t must be defined by the libc stddef.h */
126#include <stddef.h>
127
128#ifndef __SIZE_TYPE__
129#define __SIZE_TYPE__ unsigned long
130#endif
131
132#if !defined(_SSIZE_T_DECLARED) && !defined(__ssize_t_defined)
134#define unsigned signed /* parasoft-suppress MISRAC2012-RULE_20_4-a MISRAC2012-RULE_20_4-b */
135typedef __SIZE_TYPE__ ssize_t;
136#undef unsigned
137#define _SSIZE_T_DECLARED
138#define __ssize_t_defined
139#endif
140
141#if !defined(_SUSECONDS_T_DECLARED) && !defined(__suseconds_t_defined)
143typedef long suseconds_t;
144#define _SUSECONDS_T_DECLARED
145#define __suseconds_t_defined
146#endif
147
148/* time_t must be defined by the libc time.h */
149#include <time.h>
150
151#if __STDC_VERSION__ >= 201112L
152/* struct timespec must be defined in the libc time.h */
153#else
154/*
155 * there is a workaround needed for picolibc because it doesn't have guards around the definition
156 * of struct timespec
157 */
158#if !defined(_TIMESPEC_DECLARED) && !defined(__timespec_defined) && !defined(CONFIG_PICOLIBC)
164struct timespec {
165 time_t tv_sec;
166 long tv_nsec;
167};
168#define _TIMESPEC_DECLARED
169#define __timespec_defined
170#endif
171#endif
172
173/* TODO: trace_attr_t, trace_event_id_t, trace_event_set_t, trace_id_t */
174
175#if !defined(_UID_T_DECLARED) && !defined(__uid_t_defined)
177typedef unsigned short uid_t;
178#define _UID_T_DECLARED
179#define __uid_t_defined
180#endif
181
182#if (_POSIX_C_SOURCE < 200809L) || defined(__DOXYGEN__)
183#if !defined(_USECONDS_T_DECLARED) && !defined(__useconds_t_defined)
185typedef unsigned long useconds_t;
186#define _USECONDS_T_DECLARED
187#define __useconds_t_defined
188#endif
189#endif
190
191#ifdef __cplusplus
192}
193#endif
194
195#include <sys/_pthreadtypes.h>
196
197#endif /* ZEPHYR_INCLUDE_POSIX_SYS_TYPES_H_ */
Time value with nanosecond resolution.
Definition aio.h:62
long tv_nsec
Nanoseconds [0, 999999999].
Definition aio.h:64
time_t tv_sec
Seconds.
Definition aio.h:63
POSIX time-of-day types and functions (<sys/time.h>)
unsigned long fsblkcnt_t
Used for file system block counts.
Definition types.h:63
int dev_t
Used for device IDs.
Definition types.h:56
long ino_t
Used for file serial numbers.
Definition types.h:84
unsigned long useconds_t
Used for time in microseconds (obsolescent).
Definition types.h:185
int pid_t
Used for process IDs and process group IDs.
Definition types.h:120
unsigned short gid_t
Used for group IDs.
Definition types.h:77
unsigned long clock_t
Used for system times in clock ticks or CLOCKS_PER_SEC.
Definition types.h:42
unsigned long blksize_t
Used for block sizes.
Definition types.h:35
unsigned long clockid_t
Used for clock ID type in the clock and timer functions.
Definition types.h:49
unsigned short uid_t
Used for user IDs.
Definition types.h:177
int mode_t
Used for file attributes.
Definition types.h:99
unsigned short nlink_t
Used for link counts.
Definition types.h:106
unsigned long key_t
Used for XSI interprocess communication.
Definition types.h:92
long blkcnt_t
Used for file block counts.
Definition types.h:28
unsigned long fsfilcnt_t
Used for file system file counts.
Definition types.h:70
long suseconds_t
Used for time in microseconds.
Definition types.h:143
long off_t
Used for file sizes and offsets.
Definition types.h:113