OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [uClibc/] [libc/] [sysdeps/] [linux/] [i386/] [bits/] [select.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1325 phoenix
/* Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
2
   This file is part of the GNU C Library.
3
 
4
   The GNU C Library is free software; you can redistribute it and/or
5
   modify it under the terms of the GNU Lesser General Public
6
   License as published by the Free Software Foundation; either
7
   version 2.1 of the License, or (at your option) any later version.
8
 
9
   The GNU C Library is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12
   Lesser General Public License for more details.
13
 
14
   You should have received a copy of the GNU Lesser General Public
15
   License along with the GNU C Library; if not, write to the Free
16
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
   02111-1307 USA.  */
18
 
19
#ifndef _SYS_SELECT_H
20
# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
21
#endif
22
 
23
#undef __FD_ZERO
24
#undef __FD_SET
25
#undef __FD_CLR
26
#undef __FD_ISSET
27
 
28
#if defined __GNUC__ && __GNUC__ >= 2
29
 
30
# define __FD_ZERO(fdsp) \
31
  do {                                                                        \
32
    int __d0, __d1;                                                           \
33
    __asm__ __volatile__ ("cld; rep; stosl"                                   \
34
                          : "=c" (__d0), "=D" (__d1)                          \
35
                          : "a" (0), "0" (sizeof (fd_set)               \
36
                                          / sizeof (__fd_mask)),              \
37
                            "1" (&__FDS_BITS (fdsp)[0])                        \
38
                          : "memory");                                        \
39
  } while (0)
40
 
41
# define __FD_SET(fd, fdsp) \
42
  __asm__ __volatile__ ("btsl %1,%0"                                          \
43
                        : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)])              \
44
                        : "r" (((int) (fd)) % __NFDBITS)                      \
45
                        : "cc","memory")
46
# define __FD_CLR(fd, fdsp) \
47
  __asm__ __volatile__ ("btrl %1,%0"                                          \
48
                        : "=m" (__FDS_BITS (fdsp)[__FDELT (fd)])              \
49
                        : "r" (((int) (fd)) % __NFDBITS)                      \
50
                        : "cc","memory")
51
# define __FD_ISSET(fd, fdsp) \
52
  (__extension__                                                              \
53
   ({register char __result;                                                  \
54
     __asm__ __volatile__ ("btl %1,%2 ; setcb %b0"                            \
55
                           : "=q" (__result)                                  \
56
                           : "r" (((int) (fd)) % __NFDBITS),                  \
57
                             "m" (__FDS_BITS (fdsp)[__FDELT (fd)])            \
58
                           : "cc");                                           \
59
     __result; }))
60
 
61
#else   /* ! GNU CC */
62
 
63
/* We don't use `memset' because this would require a prototype and
64
   the array isn't too big.  */
65
# define __FD_ZERO(set)  \
66
  do {                                                                        \
67
    unsigned int __i;                                                         \
68
    fd_set *__arr = (set);                                                    \
69
    for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)           \
70
      __FDS_BITS (__arr)[__i] = 0;                                             \
71
  } while (0)
72
# define __FD_SET(d, set)    (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))
73
# define __FD_CLR(d, set)    (__FDS_BITS (set)[__FDELT (d)] &= ~__FDMASK (d))
74
# define __FD_ISSET(d, set)  (__FDS_BITS (set)[__FDELT (d)] & __FDMASK (d))
75
 
76
#endif  /* GNU CC */

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.