diff options
author | Miles Bader <miles@lsi.nec.co.jp> | 2002-03-05 02:18:47 +0000 |
---|---|---|
committer | Miles Bader <miles@lsi.nec.co.jp> | 2002-03-05 02:18:47 +0000 |
commit | cb744468838407ccc5e98b96353056dd0475e8f2 (patch) | |
tree | 2a75d13131a0462e19b013490ce933f33f02fefc /libc/sysdeps/linux/v850/bits/select.h | |
parent | 808a01687d0c113f939b52b2c453f2873a7096eb (diff) |
Re-add files which were mistakenly deleted during the big bits/ update.
Diffstat (limited to 'libc/sysdeps/linux/v850/bits/select.h')
-rw-r--r-- | libc/sysdeps/linux/v850/bits/select.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/v850/bits/select.h b/libc/sysdeps/linux/v850/bits/select.h new file mode 100644 index 000000000..b6bb05452 --- /dev/null +++ b/libc/sysdeps/linux/v850/bits/select.h @@ -0,0 +1,64 @@ +/* + * include/bits/select.h -- fd_set operations + * + * Copyright (C) 2001 NEC Corporation + * Copyright (C) 2001 Miles Bader <miles@gnu.org> + * Copyright (C) 1997, 1998 Free Software Foundation, Inc. + * + * This file is subject to the terms and conditions of the GNU Lesser + * General Public License. See the file COPYING.LIB in the main + * directory of this archive for more details. + */ + +#ifndef _SYS_SELECT_H +# error "Never use <bits/select.h> directly; include <sys/select.h> instead." +#endif + +#ifdef __GNUC__ + +/* We don't use `memset' because this would require a prototype and + the array isn't too big. */ +#define __FD_ZERO(s) \ + do { \ + unsigned int __i; \ + fd_set *__arr = (s); \ + for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ + __FDS_BITS (__arr)[__i] = 0; \ + } while (0) + +#define __FD_SET(fd, s) \ + do { \ + int __fd = (fd); \ + void *__addr = (void *)&__FDS_BITS (s); \ + __asm__ __volatile__ ("set1 %0, [%1]" \ + : /*nothing*/ \ + : "r" (__fd & 0x7), "r" (__addr + (__fd >> 3)));\ + } while (0) + +#define __FD_CLR(fd, s) \ + do { \ + int __fd = (fd); \ + void *__addr = (void *)&__FDS_BITS (s); \ + __asm__ __volatile__ ("clr1 %0, [%1]" \ + : /*nothing*/ \ + : "r" (__fd & 0x7), "r" (__addr + (__fd >> 3)));\ + } while (0) + +#define __FD_ISSET(fd, s) \ + ({ \ + int __fd = (fd); \ + void *__addr = (void *)&__FDS_BITS (s); \ + int res; \ + __asm__ ("tst1 %1, [%2]; setf nz, %0" \ + : "=r" (res) \ + : "r" (__fd & 0x7), "r" (__addr + (__fd >> 3))); \ + res; \ + }) + +#else /* !__GNUC__ */ + +#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) +#define __FD_CLR(d, s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d)) +#define __FD_ISSET(d, s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0) + +#endif /* __GNUC__ */ |