1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef __ARCH_I386_POSIX_TYPES_H
2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __ARCH_I386_POSIX_TYPES_H
3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/*
5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * This file is generally used by user-level software, so you need to
6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * be a little careful about namespace pollution etc.  Also, we cannot
7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru * assume GCC is being used.
8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru */
9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned long	__kernel_ino_t;
11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_mode_t;
12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_nlink_t;
13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef long		__kernel_off_t;
14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		__kernel_pid_t;
15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_ipc_pid_t;
16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_uid_t;
17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_gid_t;
18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned int	__kernel_size_t;
19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		__kernel_ssize_t;
20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		__kernel_ptrdiff_t;
21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef long		__kernel_time_t;
22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef long		__kernel_suseconds_t;
23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef long		__kernel_clock_t;
24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		__kernel_timer_t;
25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		__kernel_clockid_t;
26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef int		__kernel_daddr_t;
27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef char *		__kernel_caddr_t;
28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_uid16_t;
29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_gid16_t;
30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned int	__kernel_uid32_t;
31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned int	__kernel_gid32_t;
32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_old_uid_t;
34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_old_gid_t;
35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef unsigned short	__kernel_old_dev_t;
36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __GNUC__
38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef long long	__kernel_loff_t;
39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct {
42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(__KERNEL__) || defined(__USE_ALL)
43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int	val[2];
44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int	__val[2];
46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} __kernel_fsid_t;
48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#undef	__FD_SET
52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __FD_SET(fd,fdsetp) \
53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		__asm__ __volatile__("btsl %1,%0": \
54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			"+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd)))
55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#undef	__FD_CLR
57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __FD_CLR(fd,fdsetp) \
58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		__asm__ __volatile__("btrl %1,%0": \
59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			"+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd)))
60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#undef	__FD_ISSET
62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __FD_ISSET(fd,fdsetp) (__extension__ ({ \
63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		unsigned char __result; \
64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		__asm__ __volatile__("btl %1,%2 ; setb %0" \
65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			:"=q" (__result) :"r" ((int) (fd)), \
66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			"m" (*(__kernel_fd_set *) (fdsetp))); \
67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru		__result; }))
68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#undef	__FD_ZERO
70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define __FD_ZERO(fdsetp) \
71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querudo { \
72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int __d0, __d1; \
73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	__asm__ __volatile__("cld ; rep ; stosl" \
74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			:"=m" (*(__kernel_fd_set *) (fdsetp)), \
75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			  "=&c" (__d0), "=&D" (__d1) \
76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			:"a" (0), "1" (__FDSET_LONGS), \
77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru			"2" ((__kernel_fd_set *) (fdsetp)) : "memory"); \
78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} while (0)
79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
83