Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.
1: /* 2: * Copyright (c) 2003-2012 Apple Inc. All rights reserved. 3: * 4: * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5: * 6: * This file contains Original Code and/or Modifications of Original Code 7: * as defined in and that are subject to the Apple Public Source License 8: * Version 2.0 (the 'License'). You may not use this file except in 9: * compliance with the License. The rights granted to you under the License 10: * may not be used to create, or enable the creation or redistribution of, 11: * unlawful or unlicensed copies of an Apple operating system, or to 12: * circumvent, violate, or enable the circumvention or violation of, any 13: * terms of an Apple operating system software license agreement. 14: * 15: * Please obtain a copy of the License at 16: * http://www.opensource.apple.com/apsl/ and read it before using this file. 17: * 18: * The Original Code and all software distributed under the License are 19: * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22: * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23: * Please see the License for the specific language governing rights and 24: * limitations under the License. 25: * 26: * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27: */ 28: #ifndef _FD_SET 29: #define _FD_SET 30: /* 31: * Select uses bit masks of file descriptors in longs. These macros 32: * manipulate such bit fields (the filesystem macros use chars). The 33: * extra protection here is to permit application redefinition above 34: * the default size. 35: */ 36: #ifdef FD_SETSIZE 37: #define __DARWIN_FD_SETSIZE FD_SETSIZE 38: #else /* !FD_SETSIZE */ 39: #define __DARWIN_FD_SETSIZE 1024 40: #endif /* FD_SETSIZE */ 41: #define __DARWIN_NBBY 8 /* bits in a byte */ 42: #define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */ 43: #define __DARWIN_howmany(x, y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1)) /* # y's == x bits? */ 44: 45: __BEGIN_DECLS 46: typedef struct fd_set { 47: __int32_t fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)]; 48: } fd_set; 49: __END_DECLS 50: 51: /* This inline avoids argument side-effect issues with FD_ISSET() */ 52: static __inline int 53: __darwin_fd_isset(int _n, const struct fd_set *_p) 54: { 55: return (_p->fds_bits[(unsigned long)_n/__DARWIN_NFDBITS] & ((__int32_t)(1<<((unsigned long)_n % __DARWIN_NFDBITS)))); 56: } 57: 58: #define __DARWIN_FD_SET(n, p) do { int __fd = (n); ((p)->fds_bits[(unsigned long)__fd/__DARWIN_NFDBITS] |= ((__int32_t)(1<<((unsigned long)__fd % __DARWIN_NFDBITS)))); } while(0) 59: #define __DARWIN_FD_CLR(n, p) do { int __fd = (n); ((p)->fds_bits[(unsigned long)__fd/__DARWIN_NFDBITS] &= ~((__int32_t)(1<<((unsigned long)__fd % __DARWIN_NFDBITS)))); } while(0) 60: #define __DARWIN_FD_ISSET(n, p) __darwin_fd_isset((n), (p)) 61: 62: #if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 3 63: /* 64: * Use the built-in bzero function instead of the library version so that 65: * we do not pollute the namespace or introduce prototype warnings. 66: */ 67: #define __DARWIN_FD_ZERO(p) __builtin_bzero(p, sizeof(*(p))) 68: #else 69: #define __DARWIN_FD_ZERO(p) bzero(p, sizeof(*(p))) 70: #endif 71: 72: #define __DARWIN_FD_COPY(f, t) bcopy(f, t, sizeof(*(f))) 73: #endif /* _FD_SET */ 74: