Line data Source code
1 0 : /*
2 : * Copyright (c) 2018 Intel Corporation
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_POSIX_TYPES_H_
8 : #define ZEPHYR_INCLUDE_POSIX_TYPES_H_
9 :
10 : #if !(defined(CONFIG_ARCH_POSIX) && defined(CONFIG_EXTERNAL_LIBC))
11 : #include <sys/types.h>
12 : #endif
13 :
14 : #if !defined(_CLOCK_T_DECLARED) && !defined(__clock_t_defined)
15 0 : typedef unsigned long clock_t;
16 : #define _CLOCK_T_DECLARED
17 : #define __clock_t_defined
18 : #endif
19 :
20 : #if !defined(_CLOCKID_T_DECLARED) && !defined(__clockid_t_defined)
21 0 : typedef unsigned long clockid_t;
22 : #define _CLOCKID_T_DECLARED
23 : #define __clockid_t_defined
24 : #endif
25 :
26 : #ifdef CONFIG_NEWLIB_LIBC
27 : #include <sys/_pthreadtypes.h>
28 : #endif
29 :
30 : #include <zephyr/kernel.h>
31 :
32 : #ifdef __cplusplus
33 : extern "C" {
34 : #endif
35 :
36 : #if !defined(_DEV_T_DECLARED) && !defined(__dev_t_defined)
37 0 : typedef int dev_t;
38 : #define _DEV_T_DECLARED
39 : #define __dev_t_defined
40 : #endif
41 :
42 : #if !defined(_INO_T_DECLARED) && !defined(__ino_t_defined)
43 0 : typedef int ino_t;
44 : #define _INO_T_DECLARED
45 : #define __ino_t_defined
46 : #endif
47 :
48 : #if !defined(_NLINK_T_DECLARED) && !defined(__nlink_t_defined)
49 0 : typedef unsigned short nlink_t;
50 : #define _NLINK_T_DECLARED
51 : #define __nlink_t_defined
52 : #endif
53 :
54 : #if !defined(_UID_T_DECLARED) && !defined(__uid_t_defined)
55 0 : typedef unsigned short uid_t;
56 : #define _UID_T_DECLARED
57 : #define __uid_t_defined
58 : #endif
59 :
60 : #if !defined(_GID_T_DECLARED) && !defined(__gid_t_defined)
61 0 : typedef unsigned short gid_t;
62 : #define _GID_T_DECLARED
63 : #define __gid_t_defined
64 : #endif
65 :
66 : #if !defined(_BLKSIZE_T_DECLARED) && !defined(__blksize_t_defined)
67 0 : typedef unsigned long blksize_t;
68 : #define _BLKSIZE_T_DECLARED
69 : #define __blksize_t_defined
70 : #endif
71 :
72 : #if !defined(_BLKCNT_T_DECLARED) && !defined(__blkcnt_t_defined)
73 0 : typedef unsigned long blkcnt_t;
74 : #define _BLKCNT_T_DECLARED
75 : #define __blkcnt_t_defined
76 : #endif
77 :
78 : #if !defined(CONFIG_ARCMWDT_LIBC)
79 0 : typedef int pid_t;
80 : #endif
81 :
82 : #ifndef __useconds_t_defined
83 0 : typedef unsigned long useconds_t;
84 : #endif
85 :
86 : /* time related attributes */
87 : #if !defined(__timer_t_defined) && !defined(_TIMER_T_DECLARED)
88 0 : typedef unsigned long timer_t;
89 : #endif
90 :
91 : /* Thread attributes */
92 0 : struct pthread_attr {
93 0 : void *stack;
94 0 : uint32_t details[2];
95 : };
96 :
97 : #if !defined(CONFIG_NEWLIB_LIBC)
98 0 : typedef struct pthread_attr pthread_attr_t;
99 : BUILD_ASSERT(sizeof(pthread_attr_t) >= sizeof(struct pthread_attr));
100 : #endif
101 :
102 0 : typedef uint32_t pthread_t;
103 0 : typedef uint32_t pthread_spinlock_t;
104 :
105 : /* Semaphore */
106 0 : typedef struct k_sem sem_t;
107 :
108 : /* Mutex */
109 0 : typedef uint32_t pthread_mutex_t;
110 :
111 0 : struct pthread_mutexattr {
112 0 : unsigned char type: 2;
113 0 : bool initialized: 1;
114 : };
115 : #if !defined(CONFIG_NEWLIB_LIBC)
116 0 : typedef struct pthread_mutexattr pthread_mutexattr_t;
117 : BUILD_ASSERT(sizeof(pthread_mutexattr_t) >= sizeof(struct pthread_mutexattr));
118 : #endif
119 :
120 : /* Condition variables */
121 0 : typedef uint32_t pthread_cond_t;
122 :
123 0 : struct pthread_condattr {
124 0 : clockid_t clock;
125 : };
126 :
127 : #if !defined(CONFIG_NEWLIB_LIBC)
128 0 : typedef struct pthread_condattr pthread_condattr_t;
129 : BUILD_ASSERT(sizeof(pthread_condattr_t) >= sizeof(struct pthread_condattr));
130 : #endif
131 :
132 : /* Barrier */
133 0 : typedef uint32_t pthread_barrier_t;
134 :
135 0 : typedef struct pthread_barrierattr {
136 0 : int pshared;
137 0 : } pthread_barrierattr_t;
138 :
139 0 : typedef uint32_t pthread_rwlockattr_t;
140 :
141 0 : typedef uint32_t pthread_rwlock_t;
142 :
143 0 : struct pthread_once {
144 0 : bool flag;
145 : };
146 :
147 : #if !defined(CONFIG_NEWLIB_LIBC)
148 0 : typedef uint32_t pthread_key_t;
149 0 : typedef struct pthread_once pthread_once_t;
150 : /* Newlib typedefs pthread_once_t as a struct with two ints */
151 : BUILD_ASSERT(sizeof(pthread_once_t) >= sizeof(struct pthread_once));
152 : #endif
153 :
154 : #ifdef __cplusplus
155 : }
156 : #endif
157 :
158 : #endif /* ZEPHYR_INCLUDE_POSIX_TYPES_H_ */
|