aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-01-27 19:28:32 +0000
committerUlrich Drepper <drepper@redhat.com>2001-01-27 19:28:32 +0000
commit2ff458ebe647b5aba45d3b8f49ea76d2d993d5db (patch)
tree384a317dd5538204979905ed9e8856513a946556
parenteec409170bdfca76393e39502c0435e25c62153a (diff)
downloadglibc-2ff458ebe647b5aba45d3b8f49ea76d2d993d5db.zip
glibc-2ff458ebe647b5aba45d3b8f49ea76d2d993d5db.tar.gz
glibc-2ff458ebe647b5aba45d3b8f49ea76d2d993d5db.tar.bz2
Update.
2001-01-27 Ulrich Drepper <drepper@redhat.com> * signal/signal.h: Fix handling of __need_* symbols. * misc/sys/select.c: Define fd_set here. Remove __fd_set. Define fd_mask only if __USE_MISC. Declare pselect for __USE_XOPEN2K. * include/sys/select.h: Use fd_set not __fd_set. * sysdeps/generic/bits/select.h: Likewise. * sysdeps/i386/bits/select.h: Likewise. * sysdeps/generic/bits/types.h: Don't define __fd_mask, __NFDBITS, __FDELT, __FDMASK, and __fd_set here. * sysdeps/unix/sysv/aix/bits/types.h: Likewise. * sysdeps/unix/sysv/hpux/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/ia64/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise. * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise. * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise. * time/sys/time.h: Define struct timeval before including <time.h> and <sys/select.h>. * conform/data/sys/time.h-data: fd_set is a typedef. * conform/data/sys/select.h-data: New file. * conform/data/sys/mman.h-data: Make typed mem stuff optional. * conform/conformtest.pl (@headers): Add sys/select.h. (type, optional-type): Unless testing a typedef instantiate object. Implement optional-function. * math/test-misc.c: Include <float.h>.
-rw-r--r--ChangeLog30
-rw-r--r--bits/select.h6
-rw-r--r--bits/types.h23
-rw-r--r--conform/conformtest.pl108
-rw-r--r--conform/data/sys/mman.h-data18
-rw-r--r--conform/data/sys/select.h-data33
-rw-r--r--conform/data/sys/time.h-data5
-rw-r--r--include/sys/select.h10
-rw-r--r--misc/sys/select.h72
-rw-r--r--signal/signal.h14
-rw-r--r--sysdeps/generic/bits/select.h6
-rw-r--r--sysdeps/generic/bits/types.h23
-rw-r--r--sysdeps/i386/bits/select.h8
-rw-r--r--sysdeps/unix/sysv/aix/bits/types.h24
-rw-r--r--sysdeps/unix/sysv/hpux/bits/types.h24
-rw-r--r--sysdeps/unix/sysv/linux/alpha/bits/types.h28
-rw-r--r--sysdeps/unix/sysv/linux/bits/types.h24
-rw-r--r--sysdeps/unix/sysv/linux/ia64/bits/types.h28
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/types.h24
-rw-r--r--sysdeps/unix/sysv/linux/sparc/bits/types.h29
-rw-r--r--sysdeps/unix/sysv/sysv4/solaris2/bits/types.h22
-rw-r--r--time/sys/time.h8
22 files changed, 249 insertions, 318 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ffd415..6e2e5c8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+2001-01-27 Ulrich Drepper <drepper@redhat.com>
+
+ * signal/signal.h: Fix handling of __need_* symbols.
+ * misc/sys/select.c: Define fd_set here. Remove __fd_set. Define
+ fd_mask only if __USE_MISC. Declare pselect for __USE_XOPEN2K.
+ * include/sys/select.h: Use fd_set not __fd_set.
+ * sysdeps/generic/bits/select.h: Likewise.
+ * sysdeps/i386/bits/select.h: Likewise.
+ * sysdeps/generic/bits/types.h: Don't define __fd_mask, __NFDBITS,
+ __FDELT, __FDMASK, and __fd_set here.
+ * sysdeps/unix/sysv/aix/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/hpux/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/alpha/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/ia64/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/linux/sparc/bits/types.h: Likewise.
+ * sysdeps/unix/sysv/sysv4/solaris2/bits/types.h: Likewise.
+ * time/sys/time.h: Define struct timeval before including <time.h>
+ and <sys/select.h>.
+
+ * conform/data/sys/time.h-data: fd_set is a typedef.
+ * conform/data/sys/select.h-data: New file.
+ * conform/data/sys/mman.h-data: Make typed mem stuff optional.
+ * conform/conformtest.pl (@headers): Add sys/select.h.
+ (type, optional-type): Unless testing a typedef instantiate object.
+ Implement optional-function.
+
+ * math/test-misc.c: Include <float.h>.
+
2001-01-27 Andreas Jaeger <aj@suse.de>
* misc/efgcvt_r.c: Include <float.h>.
diff --git a/bits/select.h b/bits/select.h
index 4513135..dfe623e 100644
--- a/bits/select.h
+++ b/bits/select.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -26,8 +26,8 @@
#define __FD_ZERO(s) \
do { \
unsigned int __i; \
- __fd_set *__arr = (s); \
- for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__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(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
diff --git a/bits/types.h b/bits/types.h
index fd2ec22..13d7120 100644
--- a/bits/types.h
+++ b/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,94-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -93,30 +93,9 @@ typedef int __clockid_t;
typedef int __timer_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 256
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (sizeof (unsigned long int) * 8)
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
/* XXX Used in `struct shmid_ds'. */
typedef unsigned short int __ipc_pid_t;
diff --git a/conform/conformtest.pl b/conform/conformtest.pl
index 1357bb3..b0220f5 100644
--- a/conform/conformtest.pl
+++ b/conform/conformtest.pl
@@ -15,18 +15,18 @@ if (@headers == ()) {
"termios.h", "tar.h", "sys/wait.h", "sys/utsname.h", "sys/un.h",
"sys/uio.h", "sys/types.h", "sys/times.h", "sys/timeb.h",
"sys/time.h", "sys/statvfs.h", "sys/stat.h", "sys/socket.h",
- "sys/shm.h", "sys/sem.h", "sys/resource.h", "sys/msg.h",
- "sys/mman.h", "sys/ipc.h", "syslog.h", "stropts.h", "strings.h",
- "string.h", "stdlib.h", "stdio.h", "stdint.h", "stddef.h",
- "stdarg.h", "spawn.h", "signal.h", "setjmp.h", "semaphore.h",
- "search.h", "sched.h", "regex.h", "pwd.h", "pthread.h",
- "poll.h", "nl_types.h", "netinet/tcp.h", "netinet/in.h",
- "net/if.h", "netdb.h", "ndbm.h", "mqueue.h", "monetary.h",
- "math.h", "locale.h", "libgen.h", "limits.h", "langinfo.h",
- "iso646.h", "inttypes.h", "iconv.h", "grp.h", "glob.h", "ftw.h",
- "fnmatch.h", "fmtmsg.h", "float.h", "fcntl.h", "errno.h",
- "dlfcn.h", "dirent.h", "ctype.h", "cpio.h", "assert.h",
- "arpa/inet.h", "aio.h");
+ "sys/shm.h", "sys/sem.h", "sys/select.h", "sys/resource.h",
+ "sys/msg.h", "sys/mman.h", "sys/ipc.h", "syslog.h", "stropts.h",
+ "strings.h", "string.h", "stdlib.h", "stdio.h", "stdint.h",
+ "stddef.h", "stdarg.h", "spawn.h", "signal.h", "setjmp.h",
+ "semaphore.h", "search.h", "sched.h", "regex.h", "pwd.h",
+ "pthread.h", "poll.h", "nl_types.h", "netinet/tcp.h",
+ "netinet/in.h", "net/if.h", "netdb.h", "ndbm.h", "mqueue.h",
+ "monetary.h", "math.h", "locale.h", "libgen.h", "limits.h",
+ "langinfo.h", "iso646.h", "inttypes.h", "iconv.h", "grp.h",
+ "glob.h", "ftw.h", "fnmatch.h", "fmtmsg.h", "float.h", "fcntl.h",
+ "errno.h", "dlfcn.h", "dirent.h", "ctype.h", "cpio.h",
+ "assert.h", "arpa/inet.h", "aio.h");
}
if ($dialect ne "ISO" && $dialect ne "POSIX" && $dialect ne "XPG3"
@@ -590,6 +590,7 @@ while ($#headers >= 0) {
}
} elsif (/^optional-type *({([^}]*)|([a-zA-Z0-9_]*))/) {
my($type) = "$2$3";
+ my($maybe_opaque) = 0;
# Remember that this name is allowed.
if ($type =~ /^struct *(.*)/) {
@@ -598,6 +599,7 @@ while ($#headers >= 0) {
push @allow, $1;
} else {
push @allow, $type;
+ $maybe_opaque = 1;
}
# Remember that this name is allowed.
@@ -607,13 +609,18 @@ while ($#headers >= 0) {
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n";
- print TESTFILE "$type *a;\n";
+ if ($maybe_opaque == 1) {
+ print TESTFILE "$type *a;\n";
+ } else {
+ print TESTFILE "$type a;\n";
+ }
close (TESTFILE);
compiletest ($fnamebase, "Testing for type $type",
- "Type \"$type\" not available.", $missing, 1);
+ "NOT AVAILABLE", $missing, 1);
} elsif (/^type *({([^}]*)|([a-zA-Z0-9_]*))/) {
my($type) = "$2$3";
+ my($maybe_opaque) = 0;
# Remember that this name is allowed.
if ($type =~ /^struct *(.*)/) {
@@ -622,6 +629,7 @@ while ($#headers >= 0) {
push @allow, $1;
} else {
push @allow, $type;
+ $maybe_opaque = 1;
}
# Remember that this name is allowed.
@@ -631,11 +639,48 @@ while ($#headers >= 0) {
open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n";
- print TESTFILE "$type *a;\n";
+ if ($maybe_opaque == 1) {
+ print TESTFILE "$type *a;\n";
+ } else {
+ print TESTFILE "$type a;\n";
+ }
close (TESTFILE);
compiletest ($fnamebase, "Testing for type $type",
"Type \"$type\" not available.", $missing, 0);
+ } elsif (/^optional-function *({([^}]*)}|([a-zA-Z0-9_]*)) [(][*]([a-zA-Z0-9_]*) ([(].*[)])/) {
+ my($rettype) = "$2$3";
+ my($fname) = "$4";
+ my($args) = "$5";
+ my($res) = $missing;
+
+ # Remember that this name is allowed.
+ push @allow, $fname;
+
+ # Generate a program to test for availability of this function.
+ open (TESTFILE, ">$fnamebase.c");
+ print TESTFILE "$prepend";
+ print TESTFILE "#include <$h>\n";
+ # print TESTFILE "#undef $fname\n";
+ print TESTFILE "$rettype (*(*foobarbaz) $args = $fname;\n";
+ close (TESTFILE);
+
+ $res = compiletest ($fnamebase, "Test availability of function $fname",
+ "NOT AVAILABLE", $res, 1);
+
+ if ($res == 0 || $missing == 1) {
+ # Generate a program to test for the type of this function.
+ open (TESTFILE, ">$fnamebase.c");
+ print TESTFILE "$prepend";
+ print TESTFILE "#include <$h>\n";
+ # print TESTFILE "#undef $fname\n";
+ print TESTFILE "extern $rettype (*(*foobarbaz) $args;\n";
+ print TESTFILE "extern __typeof__ (&$fname) foobarbaz;\n";
+ close (TESTFILE);
+
+ compiletest ($fnamebase, "Test for type of function $fname",
+ "Function \"$fname\" has incorrect type.", $res, 0);
+ }
} elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) [(][*]([a-zA-Z0-9_]*) ([(].*[)])/) {
my($rettype) = "$2$3";
my($fname) = "$4";
@@ -667,6 +712,39 @@ while ($#headers >= 0) {
compiletest ($fnamebase, "Test for type of function $fname",
"Function \"$fname\" has incorrect type.", $res, 0);
+ } elsif (/^optional-function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
+ my($rettype) = "$2$3";
+ my($fname) = "$4";
+ my($args) = "$5";
+ my($res) = $missing;
+
+ # Remember that this name is allowed.
+ push @allow, $fname;
+
+ # Generate a program to test for availability of this function.
+ open (TESTFILE, ">$fnamebase.c");
+ print TESTFILE "$prepend";
+ print TESTFILE "#include <$h>\n";
+ # print TESTFILE "#undef $fname\n";
+ print TESTFILE "$rettype (*foobarbaz) $args = $fname;\n";
+ close (TESTFILE);
+
+ $res = compiletest ($fnamebase, "Test availability of function $fname",
+ "NOT AVAILABLE", $res, 1);
+
+ if ($res == 0 || $missing != 0) {
+ # Generate a program to test for the type of this function.
+ open (TESTFILE, ">$fnamebase.c");
+ print TESTFILE "$prepend";
+ print TESTFILE "#include <$h>\n";
+ # print TESTFILE "#undef $fname\n";
+ print TESTFILE "extern $rettype (*foobarbaz) $args;\n";
+ print TESTFILE "extern __typeof__ (&$fname) foobarbaz;\n";
+ close (TESTFILE);
+
+ compiletest ($fnamebase, "Test for type of function $fname",
+ "Function \"$fname\" has incorrect type.", $res, 0);
+ }
} elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
my($rettype) = "$2$3";
my($fname) = "$4";
diff --git a/conform/data/sys/mman.h-data b/conform/data/sys/mman.h-data
index d744a9e..c737efb 100644
--- a/conform/data/sys/mman.h-data
+++ b/conform/data/sys/mman.h-data
@@ -22,17 +22,16 @@ constant POSIX_MADV_RANDOM
constant POSIX_MADV_WILLNEED
constant POSIX_MADV_DONTNEED
-constant POSIX_TYPED_MEM_ALLOCATE
-constant POSIX_TYPED_MEM_ALLOCATE_CONTIG
-constant POSIX_TYPED_MEM_MAP_ALLOCATABLE
+optional-constant POSIX_TYPED_MEM_ALLOCATE
+optional-constant POSIX_TYPED_MEM_ALLOCATE_CONTIG
+optional-constant POSIX_TYPED_MEM_MAP_ALLOCATABLE
type size_t
type off_t
type mode_t
-type {struct posix_typedmem_info}
-
-element {struct posix_typedmem_info} size_t posix_tmi_length
+optional-type {struct posix_typedmem_info}
+optional-element {struct posix_typedmem_info} size_t posix_tmi_length
function int mlock (const void*, size_t)
function int mlockall (int)
@@ -42,9 +41,10 @@ function int msync (void*, size_t, int)
function int munlock (const void*, size_t)
function int munlockall (void)
function int munmap (void*, size_t)
-function int posix_mem_offset (const void*, size_t, off_t*, size_t*, int*)
-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info*)
-function int posix_typed_mem_open (const char*, int, int)
+function int posix_madvise (void*, size_t, int)
+optional-function int posix_mem_offset (const void*, size_t, off_t*, size_t*, int*)
+optional-function int posix_typed_mem_get_info (int, struct posix_typed_mem_info*)
+optional-function int posix_typed_mem_open (const char*, int, int)
function int shm_open (const char*, int, mode_t)
function int shm_unlink (const char*)
diff --git a/conform/data/sys/select.h-data b/conform/data/sys/select.h-data
new file mode 100644
index 0000000..ade26a4
--- /dev/null
+++ b/conform/data/sys/select.h-data
@@ -0,0 +1,33 @@
+#if !defined ISO && !defined POSIX
+type {struct timeval}
+element {struct timeval} time_t tv_sec
+element {struct timeval} suseconds_t tv_usec
+
+type time_t
+type suseconds_t
+
+type sigset_t
+
+type {struct timespec}
+element {struct timespec} time_t tv_sec
+element {struct timespec} long tv_nsec
+
+type fd_set
+element fd_set long fds_bits []
+
+function-macro void FD_CLR (int, fd_set*)
+function-macro int FD_ISSET (int, fd_set*)
+function-macro void FD_SET (int, fd_set*)
+function-macro void FD_ZERO (fd_set*)
+
+macro FD_SETSIZE
+
+#ifdef XOPEN2K
+function int pselect (int, fd_set*, fd_set*, fd_set*, const struct timespec*, const sigset_t*)
+#endif
+function int select (int, fd_set*, fd_set*, fd_set*, struct timeval*)
+
+allow-header signal.h
+allow-header sys/time.h
+allow-header time.h
+#endif
diff --git a/conform/data/sys/time.h-data b/conform/data/sys/time.h-data
index 49d5fbc..0de8c27 100644
--- a/conform/data/sys/time.h-data
+++ b/conform/data/sys/time.h-data
@@ -11,9 +11,8 @@ element {struct itimerval} {struct timeval} it_value
type time_t
type suseconds_t
-type {struct fd_set}
-
-element {struct fd_set} long fds_bits []
+type fd_set
+element fd_set long fds_bits []
constant ITIMER_REAL
constant ITIMER_VIRTUAL
diff --git a/include/sys/select.h b/include/sys/select.h
index 6459295..583149c 100644
--- a/include/sys/select.h
+++ b/include/sys/select.h
@@ -2,13 +2,13 @@
#include <misc/sys/select.h>
/* Now define the internal interfaces. */
-extern int __pselect (int __nfds, __fd_set *__readfds,
- __fd_set *__writefds, __fd_set *__exceptfds,
+extern int __pselect (int __nfds, fd_set *__readfds,
+ fd_set *__writefds, fd_set *__exceptfds,
const struct timespec *__timeout,
const __sigset_t *__sigmask);
-extern int __select (int __nfds, __fd_set *__restrict __readfds,
- __fd_set *__restrict __writefds,
- __fd_set *__restrict __exceptfds,
+extern int __select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout);
#endif
diff --git a/misc/sys/select.h b/misc/sys/select.h
index c182cb9..3316361 100644
--- a/misc/sys/select.h
+++ b/misc/sys/select.h
@@ -1,5 +1,5 @@
/* `fd_set' type and related macros, and `select'/`pselect' declarations.
- Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -33,58 +33,78 @@
/* Get __sigset_t. */
#include <bits/sigset.h>
+#ifndef __sigset_t_defined
+# define __sigset_t_defined
+typedef __sigset_t sigset_t;
+#endif
+
/* Get definition of timer specification structures. */
#define __need_timespec
#include <time.h>
-
-__BEGIN_DECLS
-
-/* This declaration puts `struct timeval' in global scope even if
- <sys/time.h> has not been included to define it. That way the
- `select' prototype below will not conflict with a later definition
- of `struct timeval'. */
-struct timeval;
-
-typedef __fd_mask fd_mask;
-
-/* Representation of a set of file descriptors. */
-typedef __fd_set fd_set;
+#define __need_timeval
+#include <sys/time.h>
+
+
+/* The fd_set member is required to be an array of longs. */
+typedef long int __fd_mask;
+
+/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
+#define __NFDBITS (8 * sizeof (__fd_mask))
+#define __FDELT(d) ((d) / __NFDBITS)
+#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
+
+/* fd_set for select and pselect. */
+typedef struct
+ {
+ /* XPG4.2 requires this member name. Otherwise avoid the name
+ from the global namespace. */
+#ifdef __USE_XOPEN
+ __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
+# define __FDS_BITS(set) ((set)->fds_bits)
+#else
+ __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
+# define __FDS_BITS(set) ((set)->__fds_bits)
+#endif
+ } fd_set;
/* Maximum number of file descriptors in `fd_set'. */
#define FD_SETSIZE __FD_SETSIZE
#ifdef __USE_MISC
+/* Sometimes the fd_set member is assumed to have this type. */
+typedef __fd_mask fd_mask;
+
/* Number of bits per word of `fd_set' (some code assumes this is 32). */
# define NFDBITS __NFDBITS
#endif
/* Access macros for `fd_set'. */
-#define FD_SET(fd, fdsetp) __FD_SET ((fd), (fdsetp))
-#define FD_CLR(fd, fdsetp) __FD_CLR ((fd), (fdsetp))
-#define FD_ISSET(fd, fdsetp) __FD_ISSET ((fd), (fdsetp))
+#define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)
+#define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp)
+#define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp)
#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
+__BEGIN_DECLS
+
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read
readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS
(if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
after waiting the interval specified therein. Returns the number of ready
descriptors, or -1 for errors. */
-extern int select (int __nfds, __fd_set *__restrict __readfds,
- __fd_set *__restrict __writefds,
- __fd_set *__restrict __exceptfds,
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout) __THROW;
-#ifdef __USE_GNU
-/* XXX Once/if POSIX.1g gets official this prototype will be available
- when defining __USE_POSIX. */
+#ifdef __USE_XOPEN2K
/* Same as above only that the TIMEOUT value is given with higher
resolution and a sigmask which is been set temporarily. This version
should be used. */
-extern int pselect (int __nfds, __fd_set *__restrict __readfds,
- __fd_set *__restrict __writefds,
- __fd_set *__restrict __exceptfds,
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
const struct timespec *__restrict __timeout,
const __sigset_t *__restrict __sigmask) __THROW;
#endif
diff --git a/signal/signal.h b/signal/signal.h
index 090371f..347bcb9 100644
--- a/signal/signal.h
+++ b/signal/signal.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -34,20 +34,20 @@ __BEGIN_DECLS
/* An integral type that can be modified atomically, without the
possibility of a signal arriving in the middle of the operation. */
-#ifndef __sig_atomic_t_defined
-# if defined __need_sig_atomic_t || defined _SIGNAL_H
-# undef __need_sig_atomic_t
+#if defined __need_sig_atomic_t || defined _SIGNAL_H
+# ifndef __sig_atomic_t_defined
# define __sig_atomic_t_defined
typedef __sig_atomic_t sig_atomic_t;
# endif
+# undef __need_sig_atomic_t
#endif
-#ifndef __sigset_t_defined
-# if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX)
-# undef __need_sigset_t
+#if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX)
+# ifndef __sigset_t_defined
# define __sigset_t_defined
typedef __sigset_t sigset_t;
# endif
+# undef __need_sigset_t
#endif
#ifdef _SIGNAL_H
diff --git a/sysdeps/generic/bits/select.h b/sysdeps/generic/bits/select.h
index 4513135..dfe623e 100644
--- a/sysdeps/generic/bits/select.h
+++ b/sysdeps/generic/bits/select.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -26,8 +26,8 @@
#define __FD_ZERO(s) \
do { \
unsigned int __i; \
- __fd_set *__arr = (s); \
- for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__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(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
diff --git a/sysdeps/generic/bits/types.h b/sysdeps/generic/bits/types.h
index fd2ec22..13d7120 100644
--- a/sysdeps/generic/bits/types.h
+++ b/sysdeps/generic/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,94-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -93,30 +93,9 @@ typedef int __clockid_t;
typedef int __timer_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 256
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (sizeof (unsigned long int) * 8)
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
/* XXX Used in `struct shmid_ds'. */
typedef unsigned short int __ipc_pid_t;
diff --git a/sysdeps/i386/bits/select.h b/sysdeps/i386/bits/select.h
index 6acfc5b..e168768 100644
--- a/sysdeps/i386/bits/select.h
+++ b/sysdeps/i386/bits/select.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 1999, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -28,7 +28,7 @@
int __d0, __d1; \
__asm__ __volatile__ ("cld; rep; stosl" \
: "=c" (__d0), "=D" (__d1) \
- : "a" (0), "0" (sizeof (__fd_set) \
+ : "a" (0), "0" (sizeof (fd_set) \
/ sizeof (__fd_mask)), \
"1" (&__FDS_BITS (fdsp)[0]) \
: "memory"); \
@@ -61,8 +61,8 @@
# define __FD_ZERO(set) \
do { \
unsigned int __i; \
- __fd_set *__arr = (set); \
- for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \
+ fd_set *__arr = (set); \
+ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
__FDS_BITS (__arr)[__i] = 0; \
} while (0)
# define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))
diff --git a/sysdeps/unix/sysv/aix/bits/types.h b/sysdeps/unix/sysv/aix/bits/types.h
index a89393d..cd57291 100644
--- a/sysdeps/unix/sysv/aix/bits/types.h
+++ b/sysdeps/unix/sysv/aix/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -93,31 +93,9 @@ typedef int __clockid_t;
/* Timer ID returned by `timer_create'. */
typedef int __timer_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the global namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
-
typedef long int __key_t;
diff --git a/sysdeps/unix/sysv/hpux/bits/types.h b/sysdeps/unix/sysv/hpux/bits/types.h
index e95892e..88ae1a9 100644
--- a/sysdeps/unix/sysv/hpux/bits/types.h
+++ b/sysdeps/unix/sysv/hpux/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1994-1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1992,1994-1998,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -85,31 +85,9 @@ typedef long int __swblk_t; /* Type of a swap block maybe? */
typedef __u_long __clock_t;
-/* One element in the file descriptor mask array. */
-typedef long int __fd_mask;
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 2048
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the global namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
-
typedef long int __key_t;
diff --git a/sysdeps/unix/sysv/linux/alpha/bits/types.h b/sysdeps/unix/sysv/linux/alpha/bits/types.h
index 13c3898..b357994 100644
--- a/sysdeps/unix/sysv/linux/alpha/bits/types.h
+++ b/sysdeps/unix/sysv/linux/alpha/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -92,35 +92,9 @@ typedef int __timer_t;
/* Used in `struct shmid_ds'. */
typedef int __ipc_pid_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
-/* Due to incaution, we may have gotten these from a kernel header file. */
-#undef __FD_SETSIZE
-#undef __NFDBITS
-#undef __FDMASK
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
/* Used in XTI. */
typedef long int __t_scalar_t;
diff --git a/sysdeps/unix/sysv/linux/bits/types.h b/sysdeps/unix/sysv/linux/bits/types.h
index d96ee32..497c055 100644
--- a/sysdeps/unix/sysv/linux/bits/types.h
+++ b/sysdeps/unix/sysv/linux/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -94,31 +94,9 @@ typedef int __clockid_t;
typedef int __timer_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the global namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
-
typedef int __key_t;
diff --git a/sysdeps/unix/sysv/linux/ia64/bits/types.h b/sysdeps/unix/sysv/linux/ia64/bits/types.h
index 9492c21..5821d7a 100644
--- a/sysdeps/unix/sysv/linux/ia64/bits/types.h
+++ b/sysdeps/unix/sysv/linux/ia64/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -94,35 +94,9 @@ typedef int __ipc_pid_t;
/* type to represent block size. */
typedef long int __blksize_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
-/* Due to incaution, we may have gotten these from a kernel header file. */
-#undef __FD_SETSIZE
-#undef __NFDBITS
-#undef __FDMASK
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
/* Used in XTI. */
typedef int __t_scalar_t;
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types.h b/sysdeps/unix/sysv/linux/mips/bits/types.h
index 927d609..c3b93e3 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -93,31 +93,9 @@ typedef int __clockid_t;
/* Timer ID returned by `timer_create'. */
typedef int __timer_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
-
typedef int __key_t;
diff --git a/sysdeps/unix/sysv/linux/sparc/bits/types.h b/sysdeps/unix/sysv/linux/sparc/bits/types.h
index a7de62e..8f435ef 100644
--- a/sysdeps/unix/sysv/linux/sparc/bits/types.h
+++ b/sysdeps/unix/sysv/linux/sparc/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -110,36 +110,9 @@ typedef int __clockid_t;
/* Timer ID returned by `timer_create'. */
typedef int __timer_t;
-/* One element in the file descriptor mask array. */
-typedef unsigned long int __fd_mask;
-
-/* Due to incaution, we may have gotten these from a kernel header file. */
-#undef __FD_SETSIZE
-#undef __NFDBITS
-#undef __FDMASK
-
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (8 * sizeof (__fd_mask))
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
-
-/* fd_set for select and pselect. */
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
-
typedef int __key_t;
diff --git a/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h b/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h
index 65ad002..7765fa4 100644
--- a/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h
+++ b/sysdeps/unix/sysv/sysv4/solaris2/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -89,26 +89,6 @@ typedef int __key_t; /* Type of an IPC key */
/* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024
-/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */
-#define __NFDBITS (sizeof (unsigned long int) * 8)
-#define __FDELT(d) ((d) / __NFDBITS)
-#define __FDMASK(d) ((unsigned long int) 1 << ((d) % __NFDBITS))
-
-typedef struct
- {
- /* XPG4.2 requires this member name. Otherwise avoid the name
- from the user namespace. */
-#ifdef __USE_XOPEN
- unsigned long int fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
-# define __FDS_BITS(set) ((set)->fds_bits)
-#else
- unsigned long int __fds_bits[(__FD_SETSIZE + (__NFDBITS - 1)) / __NFDBITS];
-# define __FDS_BITS(set) ((set)->__fds_bits)
-#endif
- } __fd_set;
-
-typedef unsigned long int __fd_mask;
-
/* Type to represent block size. */
typedef long int __blksize_t;
diff --git a/time/sys/time.h b/time/sys/time.h
index 12389fb..3a0a952 100644
--- a/time/sys/time.h
+++ b/time/sys/time.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,93,94,96,97,98,99,2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1994,96,97,98,99,2000,2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -21,12 +21,12 @@
#include <features.h>
-#include <time.h>
-#include <sys/select.h>
-
#define __need_timeval
#include <bits/time.h>
+#include <time.h>
+#include <sys/select.h>
+
#ifndef __suseconds_t_defined
typedef __suseconds_t suseconds_t;
# define __suseconds_t_defined