linux/include/asm-xtensa/posix_types.h
<<
>>
Prefs
   1/*
   2 * include/asm-xtensa/posix_types.h
   3 *
   4 * This file is subject to the terms and conditions of the GNU General Public
   5 * License.  See the file "COPYING" in the main directory of this archive
   6 * for more details.
   7 *
   8 * Largely copied from include/asm-ppc/posix_types.h
   9 *
  10 * Copyright (C) 2001 - 2005 Tensilica Inc.
  11 */
  12
  13#ifndef _XTENSA_POSIX_TYPES_H
  14#define _XTENSA_POSIX_TYPES_H
  15
  16/*
  17 * This file is generally used by user-level software, so you need to
  18 * be a little careful about namespace pollution etc.  Also, we cannot
  19 * assume GCC is being used.
  20 */
  21
  22typedef unsigned long   __kernel_ino_t;
  23typedef unsigned int    __kernel_mode_t;
  24typedef unsigned long   __kernel_nlink_t;
  25typedef long            __kernel_off_t;
  26typedef int             __kernel_pid_t;
  27typedef unsigned short  __kernel_ipc_pid_t;
  28typedef unsigned int    __kernel_uid_t;
  29typedef unsigned int    __kernel_gid_t;
  30typedef unsigned int    __kernel_size_t;
  31typedef int             __kernel_ssize_t;
  32typedef long            __kernel_ptrdiff_t;
  33typedef long            __kernel_time_t;
  34typedef long            __kernel_suseconds_t;
  35typedef long            __kernel_clock_t;
  36typedef int             __kernel_timer_t;
  37typedef int             __kernel_clockid_t;
  38typedef int             __kernel_daddr_t;
  39typedef char *          __kernel_caddr_t;
  40typedef unsigned short  __kernel_uid16_t;
  41typedef unsigned short  __kernel_gid16_t;
  42typedef unsigned int    __kernel_uid32_t;
  43typedef unsigned int    __kernel_gid32_t;
  44
  45typedef unsigned short  __kernel_old_uid_t;
  46typedef unsigned short  __kernel_old_gid_t;
  47typedef unsigned short  __kernel_old_dev_t;
  48
  49#ifdef __GNUC__
  50typedef long long       __kernel_loff_t;
  51#endif
  52
  53typedef struct {
  54        int     val[2];
  55} __kernel_fsid_t;
  56
  57#ifndef __GNUC__
  58
  59#define __FD_SET(d, set)        ((set)->fds_bits[__FDELT(d)] |= __FDMASK(d))
  60#define __FD_CLR(d, set)        ((set)->fds_bits[__FDELT(d)] &= ~__FDMASK(d))
  61#define __FD_ISSET(d, set)      ((set)->fds_bits[__FDELT(d)] & __FDMASK(d))
  62#define __FD_ZERO(set)  \
  63  ((void) memset ((void *) (set), 0, sizeof (__kernel_fd_set)))
  64
  65#else /* __GNUC__ */
  66
  67#if defined(__KERNEL__)
  68/* With GNU C, use inline functions instead so args are evaluated only once: */
  69
  70#undef __FD_SET
  71static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
  72{
  73        unsigned long _tmp = fd / __NFDBITS;
  74        unsigned long _rem = fd % __NFDBITS;
  75        fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
  76}
  77
  78#undef __FD_CLR
  79static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
  80{
  81        unsigned long _tmp = fd / __NFDBITS;
  82        unsigned long _rem = fd % __NFDBITS;
  83        fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
  84}
  85
  86#undef __FD_ISSET
  87static __inline__ int __FD_ISSET(unsigned long fd, __kernel_fd_set *p)
  88{
  89        unsigned long _tmp = fd / __NFDBITS;
  90        unsigned long _rem = fd % __NFDBITS;
  91        return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0;
  92}
  93
  94/*
  95 * This will unroll the loop for the normal constant case (8 ints,
  96 * for a 256-bit fd_set)
  97 */
  98#undef __FD_ZERO
  99static __inline__ void __FD_ZERO(__kernel_fd_set *p)
 100{
 101        unsigned int *tmp = (unsigned int *)p->fds_bits;
 102        int i;
 103
 104        if (__builtin_constant_p(__FDSET_LONGS)) {
 105                switch (__FDSET_LONGS) {
 106                        case 8:
 107                                tmp[0] = 0; tmp[1] = 0; tmp[2] = 0; tmp[3] = 0;
 108                                tmp[4] = 0; tmp[5] = 0; tmp[6] = 0; tmp[7] = 0;
 109                                return;
 110                }
 111        }
 112        i = __FDSET_LONGS;
 113        while (i) {
 114                i--;
 115                *tmp = 0;
 116                tmp++;
 117        }
 118}
 119
 120#endif /* defined(__KERNEL__) */
 121#endif /* __GNUC__ */
 122#endif /* _XTENSA_POSIX_TYPES_H */
 123
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.