linux/include/asm-generic/posix_types.h
<<
>>
Prefs
   1#ifndef __ASM_GENERIC_POSIX_TYPES_H
   2#define __ASM_GENERIC_POSIX_TYPES_H
   3
   4#include <asm/bitsperlong.h>
   5/*
   6 * This file is generally used by user-level software, so you need to
   7 * be a little careful about namespace pollution etc.
   8 *
   9 * First the types that are often defined in different ways across
  10 * architectures, so that you can override them.
  11 */
  12
  13#ifndef __kernel_ino_t
  14typedef unsigned long   __kernel_ino_t;
  15#endif
  16
  17#ifndef __kernel_mode_t
  18typedef unsigned int    __kernel_mode_t;
  19#endif
  20
  21#ifndef __kernel_nlink_t
  22typedef unsigned long   __kernel_nlink_t;
  23#endif
  24
  25#ifndef __kernel_pid_t
  26typedef int             __kernel_pid_t;
  27#endif
  28
  29#ifndef __kernel_ipc_pid_t
  30typedef int             __kernel_ipc_pid_t;
  31#endif
  32
  33#ifndef __kernel_uid_t
  34typedef unsigned int    __kernel_uid_t;
  35typedef unsigned int    __kernel_gid_t;
  36#endif
  37
  38#ifndef __kernel_suseconds_t
  39typedef long            __kernel_suseconds_t;
  40#endif
  41
  42#ifndef __kernel_daddr_t
  43typedef int             __kernel_daddr_t;
  44#endif
  45
  46#ifndef __kernel_uid32_t
  47typedef __kernel_uid_t  __kernel_uid32_t;
  48typedef __kernel_gid_t  __kernel_gid32_t;
  49#endif
  50
  51#ifndef __kernel_old_uid_t
  52typedef __kernel_uid_t  __kernel_old_uid_t;
  53typedef __kernel_gid_t  __kernel_old_gid_t;
  54#endif
  55
  56#ifndef __kernel_old_dev_t
  57typedef unsigned int    __kernel_old_dev_t;
  58#endif
  59
  60/*
  61 * Most 32 bit architectures use "unsigned int" size_t,
  62 * and all 64 bit architectures use "unsigned long" size_t.
  63 */
  64#ifndef __kernel_size_t
  65#if __BITS_PER_LONG != 64
  66typedef unsigned int    __kernel_size_t;
  67typedef int             __kernel_ssize_t;
  68typedef int             __kernel_ptrdiff_t;
  69#else
  70typedef unsigned long   __kernel_size_t;
  71typedef long            __kernel_ssize_t;
  72typedef long            __kernel_ptrdiff_t;
  73#endif
  74#endif
  75
  76/*
  77 * anything below here should be completely generic
  78 */
  79typedef long            __kernel_off_t;
  80typedef long long       __kernel_loff_t;
  81typedef long            __kernel_time_t;
  82typedef long            __kernel_clock_t;
  83typedef int             __kernel_timer_t;
  84typedef int             __kernel_clockid_t;
  85typedef char *          __kernel_caddr_t;
  86typedef unsigned short  __kernel_uid16_t;
  87typedef unsigned short  __kernel_gid16_t;
  88
  89typedef struct {
  90        int     val[2];
  91} __kernel_fsid_t;
  92
  93#ifdef __KERNEL__
  94
  95#undef __FD_SET
  96static inline void __FD_SET(unsigned long __fd, __kernel_fd_set *__fdsetp)
  97{
  98        unsigned long __tmp = __fd / __NFDBITS;
  99        unsigned long __rem = __fd % __NFDBITS;
 100        __fdsetp->fds_bits[__tmp] |= (1UL<<__rem);
 101}
 102
 103#undef __FD_CLR
 104static inline void __FD_CLR(unsigned long __fd, __kernel_fd_set *__fdsetp)
 105{
 106        unsigned long __tmp = __fd / __NFDBITS;
 107        unsigned long __rem = __fd % __NFDBITS;
 108        __fdsetp->fds_bits[__tmp] &= ~(1UL<<__rem);
 109}
 110
 111#undef __FD_ISSET
 112static inline int __FD_ISSET(unsigned long __fd, const __kernel_fd_set *__p)
 113{
 114        unsigned long __tmp = __fd / __NFDBITS;
 115        unsigned long __rem = __fd % __NFDBITS;
 116        return (__p->fds_bits[__tmp] & (1UL<<__rem)) != 0;
 117}
 118
 119/*
 120 * This will unroll the loop for the normal constant case (8 ints,
 121 * for a 256-bit fd_set)
 122 */
 123#undef __FD_ZERO
 124static inline void __FD_ZERO(__kernel_fd_set *__p)
 125{
 126        unsigned long *__tmp = __p->fds_bits;
 127        int __i;
 128
 129        if (__builtin_constant_p(__FDSET_LONGS)) {
 130                switch (__FDSET_LONGS) {
 131                case 16:
 132                        __tmp[ 0] = 0; __tmp[ 1] = 0;
 133                        __tmp[ 2] = 0; __tmp[ 3] = 0;
 134                        __tmp[ 4] = 0; __tmp[ 5] = 0;
 135                        __tmp[ 6] = 0; __tmp[ 7] = 0;
 136                        __tmp[ 8] = 0; __tmp[ 9] = 0;
 137                        __tmp[10] = 0; __tmp[11] = 0;
 138                        __tmp[12] = 0; __tmp[13] = 0;
 139                        __tmp[14] = 0; __tmp[15] = 0;
 140                        return;
 141
 142                case 8:
 143                        __tmp[ 0] = 0; __tmp[ 1] = 0;
 144                        __tmp[ 2] = 0; __tmp[ 3] = 0;
 145                        __tmp[ 4] = 0; __tmp[ 5] = 0;
 146                        __tmp[ 6] = 0; __tmp[ 7] = 0;
 147                        return;
 148
 149                case 4:
 150                        __tmp[ 0] = 0; __tmp[ 1] = 0;
 151                        __tmp[ 2] = 0; __tmp[ 3] = 0;
 152                        return;
 153                }
 154        }
 155        __i = __FDSET_LONGS;
 156        while (__i) {
 157                __i--;
 158                *__tmp = 0;
 159                __tmp++;
 160        }
 161}
 162
 163#endif /* __KERNEL__ */
 164
 165#endif /* __ASM_GENERIC_POSIX_TYPES_H */
 166