modernc.org/cc@v1.0.1/v2/headers/linux_386/usr/include/i386-linux-gnu/bits/select.h (about)

     1  /* Copyright (C) 1997-2018 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, see
    16     <http://www.gnu.org/licenses/>.  */
    17  
    18  #ifndef _SYS_SELECT_H
    19  # error "Never use <bits/select.h> directly; include <sys/select.h> instead."
    20  #endif
    21  
    22  #include <bits/wordsize.h>
    23  
    24  #if defined __GNUC__ && __GNUC__ >= 2
    25  
    26  # if __WORDSIZE == 64
    27  #  define __FD_ZERO_STOS "stosq"
    28  # else
    29  #  define __FD_ZERO_STOS "stosl"
    30  # endif
    31  
    32  # define __FD_ZERO(fdsp) \
    33    do {									      \
    34      int __d0, __d1;							      \
    35      __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS			      \
    36  			  : "=c" (__d0), "=D" (__d1)			      \
    37  			  : "a" (0), "0" (sizeof (fd_set)		      \
    38  					  / sizeof (__fd_mask)),	      \
    39  			    "1" (&__FDS_BITS (fdsp)[0])			      \
    40  			  : "memory");					      \
    41    } while (0)
    42  
    43  #else				/* ! GNU CC */
    44  
    45  /* We don't use `memset' because this would require a prototype and
    46     the array isn't too big.  */
    47  # define __FD_ZERO(set)  \
    48    do {									      \
    49      unsigned int __i;							      \
    50      fd_set *__arr = (set);						      \
    51      for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i)	      \
    52        __FDS_BITS (__arr)[__i] = 0;					      \
    53    } while (0)
    54  
    55  #endif				/* GNU CC */
    56  
    57  #define __FD_SET(d, set) \
    58    ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
    59  #define __FD_CLR(d, set) \
    60    ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
    61  #define __FD_ISSET(d, set) \
    62    ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)