summaryrefslogtreecommitdiffstats
path: root/rtemsbsd/include/rtems/bsd/sys/_types.h
blob: e9acaf4ef5f44286725216f166291b808960ba7b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
/*-
 * Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 * $FreeBSD$
 */

#ifndef _RTEMS_BSD_SYS__TYPES_H_
#define _RTEMS_BSD_SYS__TYPES_H_

#include <sys/cdefs.h>
#ifndef __rtems__
#include <machine/_types.h>

/*
 * Standard type definitions.
 */
typedef	__uint32_t	__blksize_t;	/* file block size */
typedef	__int64_t	__blkcnt_t;	/* file block count */
typedef	__int32_t	__clockid_t;	/* clock_gettime()... */
typedef	__uint32_t	__fflags_t;	/* file flags */
typedef	__uint64_t	__fsblkcnt_t;
typedef	__uint64_t	__fsfilcnt_t;
typedef	__uint32_t	__gid_t;
typedef	__int64_t	__id_t;		/* can hold a gid_t, pid_t, or uid_t */
typedef	__uint32_t	__ino_t;	/* inode number */
typedef	long		__key_t;	/* IPC key (for Sys V IPC) */
typedef	__int32_t	__lwpid_t;	/* Thread ID (a.k.a. LWP) */
typedef	__uint16_t	__mode_t;	/* permissions */
typedef	int		__accmode_t;	/* access permissions */
typedef	int		__nl_item;
typedef	__uint16_t	__nlink_t;	/* link count */
typedef	__int64_t	__off_t;	/* file offset */
typedef	__int32_t	__pid_t;	/* process [group] */
typedef	__int64_t	__rlim_t;	/* resource limit - intentionally */
					/* signed, because of legacy code */
					/* that uses -1 for RLIM_INFINITY */
typedef	__uint8_t	__sa_family_t;
typedef	__uint32_t	__socklen_t;
typedef	long		__suseconds_t;	/* microseconds (signed) */
typedef	struct __timer	*__timer_t;	/* timer_gettime()... */
typedef	struct __mq	*__mqd_t;	/* mq_open()... */
typedef	__uint32_t	__uid_t;
typedef	unsigned int	__useconds_t;	/* microseconds (unsigned) */
typedef	int		__cpuwhich_t;	/* which parameter for cpuset. */
typedef	int		__cpulevel_t;	/* level parameter for cpuset. */
typedef int		__cpusetid_t;	/* cpuset identifier. */

/*
 * Unusual type definitions.
 */
/*
 * rune_t is declared to be an ``int'' instead of the more natural
 * ``unsigned long'' or ``long''.  Two things are happening here.  It is not
 * unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
 * it looks like 10646 will be a 31 bit standard.  This means that if your
 * ints cannot hold 32 bits, you will be in trouble.  The reason an int was
 * chosen over a long is that the is*() and to*() routines take ints (says
 * ANSI C), but they use __ct_rune_t instead of int.
 *
 * NOTE: rune_t is not covered by ANSI nor other standards, and should not
 * be instantiated outside of lib/libc/locale.  Use wchar_t.  wchar_t and
 * rune_t must be the same type.  Also, wint_t must be no narrower than
 * wchar_t, and should be able to hold all members of the largest
 * character set plus one extra value (WEOF), and must be at least 16 bits.
 */
typedef	int		__ct_rune_t;	/* arg type for ctype funcs */
typedef	__ct_rune_t	__rune_t;	/* rune_t (see above) */
typedef	__ct_rune_t	__wchar_t;	/* wchar_t (see above) */
typedef	__ct_rune_t	__wint_t;	/* wint_t (see above) */

typedef	__uint32_t	__dev_t;	/* device number */

typedef	__uint32_t	__fixpt_t;	/* fixed point number */

/*
 * mbstate_t is an opaque object to keep conversion state during multibyte
 * stream conversions.
 */
typedef union {
	char		__mbstate8[128];
	__int64_t	_mbstateL;	/* for alignment */
} __mbstate_t;
#else /* __rtems__ */
#include <sys/types.h>

#ifdef __BSD_VISIBLE

#include <machine/rtems-bsd-endian.h>
#include <stdarg.h>

#define _INT8_T_DECLARED
#define _UINT8_T_DECLARED

#define _INT16_T_DECLARED
#define _UINT16_T_DECLARED

#define _INT32_T_DECLARED
#define _UINT32_T_DECLARED

#define _INT64_T_DECLARED
#define _UINT64_T_DECLARED

#define _INTPTR_T_DECLARED

#ifdef _KERNEL

typedef int boolean_t;

typedef struct device *device_t;

typedef intptr_t intfptr_t;
typedef uintptr_t uintfptr_t;

typedef uint32_t intrmask_t;

typedef char vm_memattr_t;

#endif /* _KERNEL */

typedef int accmode_t;
#define _ACCMODE_T_DECLARED

typedef const char *c_caddr_t;

typedef uint32_t cpumask_t;

typedef int cpusetid_t;

#define _DEV_T_DECLARED

typedef uint32_t __fixpt_t;
typedef __fixpt_t fixpt_t;

#define _GID_T_DECLARED

typedef uint32_t in_addr_t;
#define _IN_ADDR_T_DECLARED

typedef uint16_t in_port_t;
#define _IN_PORT_T_DECLARED

#define _MODE_T_DECLARED

typedef _off_t __off_t;
#define _OFF_T_DECLARED

#define _PID_T_DECLARED

typedef int register_t;
typedef unsigned int u_register_t;

typedef intptr_t segsz_t;

#undef __size_t
typedef size_t __size_t;
#define _SIZE_T_DECLARED

#define __ssize_t ssize_t
#define _SSIZE_T_DECLARED

#define _UID_T_DECLARED

#define __va_list va_list

typedef uintptr_t vm_offset_t;
typedef uint64_t vm_ooffset_t;
typedef uintptr_t vm_paddr_t;
typedef uint64_t vm_pindex_t;
typedef uintptr_t vm_size_t;

typedef int lwpid_t;
#define _LWPID_T_DECLARED

typedef int64_t rlim_t;
#define _RLIM_T_DECLARED

typedef uint8_t sa_family_t;
#define _SA_FAMILY_T_DECLARED

typedef uint32_t socklen_t;
#define _SOCKLEN_T_DECLARED

#define SIZE_T_MAX SIZE_MAX

#endif /* __BSD_VISIBLE */

#endif /* __rtems__ */

#endif /* !_RTEMS_BSD_SYS__TYPES_H_ */