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>.
This commit is contained in:
Ulrich Drepper 2001-01-27 19:28:32 +00:00
parent eec409170b
commit 2ff458ebe6
22 changed files with 245 additions and 314 deletions

View File

@ -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> 2001-01-27 Andreas Jaeger <aj@suse.de>
* misc/efgcvt_r.c: Include <float.h>. * misc/efgcvt_r.c: Include <float.h>.

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -26,8 +26,8 @@
#define __FD_ZERO(s) \ #define __FD_ZERO(s) \
do { \ do { \
unsigned int __i; \ unsigned int __i; \
__fd_set *__arr = (s); \ fd_set *__arr = (s); \
for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
__FDS_BITS (__arr)[__i] = 0; \ __FDS_BITS (__arr)[__i] = 0; \
} while (0) } while (0)
#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) #define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 256 #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'. */ /* XXX Used in `struct shmid_ds'. */
typedef unsigned short int __ipc_pid_t; typedef unsigned short int __ipc_pid_t;

View File

@ -15,18 +15,18 @@ if (@headers == ()) {
"termios.h", "tar.h", "sys/wait.h", "sys/utsname.h", "sys/un.h", "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/uio.h", "sys/types.h", "sys/times.h", "sys/timeb.h",
"sys/time.h", "sys/statvfs.h", "sys/stat.h", "sys/socket.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/shm.h", "sys/sem.h", "sys/select.h", "sys/resource.h",
"sys/mman.h", "sys/ipc.h", "syslog.h", "stropts.h", "strings.h", "sys/msg.h", "sys/mman.h", "sys/ipc.h", "syslog.h", "stropts.h",
"string.h", "stdlib.h", "stdio.h", "stdint.h", "stddef.h", "strings.h", "string.h", "stdlib.h", "stdio.h", "stdint.h",
"stdarg.h", "spawn.h", "signal.h", "setjmp.h", "semaphore.h", "stddef.h", "stdarg.h", "spawn.h", "signal.h", "setjmp.h",
"search.h", "sched.h", "regex.h", "pwd.h", "pthread.h", "semaphore.h", "search.h", "sched.h", "regex.h", "pwd.h",
"poll.h", "nl_types.h", "netinet/tcp.h", "netinet/in.h", "pthread.h", "poll.h", "nl_types.h", "netinet/tcp.h",
"net/if.h", "netdb.h", "ndbm.h", "mqueue.h", "monetary.h", "netinet/in.h", "net/if.h", "netdb.h", "ndbm.h", "mqueue.h",
"math.h", "locale.h", "libgen.h", "limits.h", "langinfo.h", "monetary.h", "math.h", "locale.h", "libgen.h", "limits.h",
"iso646.h", "inttypes.h", "iconv.h", "grp.h", "glob.h", "ftw.h", "langinfo.h", "iso646.h", "inttypes.h", "iconv.h", "grp.h",
"fnmatch.h", "fmtmsg.h", "float.h", "fcntl.h", "errno.h", "glob.h", "ftw.h", "fnmatch.h", "fmtmsg.h", "float.h", "fcntl.h",
"dlfcn.h", "dirent.h", "ctype.h", "cpio.h", "assert.h", "errno.h", "dlfcn.h", "dirent.h", "ctype.h", "cpio.h",
"arpa/inet.h", "aio.h"); "assert.h", "arpa/inet.h", "aio.h");
} }
if ($dialect ne "ISO" && $dialect ne "POSIX" && $dialect ne "XPG3" if ($dialect ne "ISO" && $dialect ne "POSIX" && $dialect ne "XPG3"
@ -590,6 +590,7 @@ while ($#headers >= 0) {
} }
} elsif (/^optional-type *({([^}]*)|([a-zA-Z0-9_]*))/) { } elsif (/^optional-type *({([^}]*)|([a-zA-Z0-9_]*))/) {
my($type) = "$2$3"; my($type) = "$2$3";
my($maybe_opaque) = 0;
# Remember that this name is allowed. # Remember that this name is allowed.
if ($type =~ /^struct *(.*)/) { if ($type =~ /^struct *(.*)/) {
@ -598,6 +599,7 @@ while ($#headers >= 0) {
push @allow, $1; push @allow, $1;
} else { } else {
push @allow, $type; push @allow, $type;
$maybe_opaque = 1;
} }
# Remember that this name is allowed. # Remember that this name is allowed.
@ -607,13 +609,18 @@ while ($#headers >= 0) {
open (TESTFILE, ">$fnamebase.c"); open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend"; print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n"; 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); close (TESTFILE);
compiletest ($fnamebase, "Testing for type $type", compiletest ($fnamebase, "Testing for type $type",
"Type \"$type\" not available.", $missing, 1); "NOT AVAILABLE", $missing, 1);
} elsif (/^type *({([^}]*)|([a-zA-Z0-9_]*))/) { } elsif (/^type *({([^}]*)|([a-zA-Z0-9_]*))/) {
my($type) = "$2$3"; my($type) = "$2$3";
my($maybe_opaque) = 0;
# Remember that this name is allowed. # Remember that this name is allowed.
if ($type =~ /^struct *(.*)/) { if ($type =~ /^struct *(.*)/) {
@ -622,6 +629,7 @@ while ($#headers >= 0) {
push @allow, $1; push @allow, $1;
} else { } else {
push @allow, $type; push @allow, $type;
$maybe_opaque = 1;
} }
# Remember that this name is allowed. # Remember that this name is allowed.
@ -631,11 +639,48 @@ while ($#headers >= 0) {
open (TESTFILE, ">$fnamebase.c"); open (TESTFILE, ">$fnamebase.c");
print TESTFILE "$prepend"; print TESTFILE "$prepend";
print TESTFILE "#include <$h>\n"; 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); close (TESTFILE);
compiletest ($fnamebase, "Testing for type $type", compiletest ($fnamebase, "Testing for type $type",
"Type \"$type\" not available.", $missing, 0); "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_]*) ([(].*[)])/) { } elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) [(][*]([a-zA-Z0-9_]*) ([(].*[)])/) {
my($rettype) = "$2$3"; my($rettype) = "$2$3";
my($fname) = "$4"; my($fname) = "$4";
@ -667,6 +712,39 @@ while ($#headers >= 0) {
compiletest ($fnamebase, "Test for type of function $fname", compiletest ($fnamebase, "Test for type of function $fname",
"Function \"$fname\" has incorrect type.", $res, 0); "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_]*) ([(].*[)])/) { } elsif (/^function *({([^}]*)}|([a-zA-Z0-9_]*)) ([a-zA-Z0-9_]*) ([(].*[)])/) {
my($rettype) = "$2$3"; my($rettype) = "$2$3";
my($fname) = "$4"; my($fname) = "$4";

View File

@ -22,17 +22,16 @@ constant POSIX_MADV_RANDOM
constant POSIX_MADV_WILLNEED constant POSIX_MADV_WILLNEED
constant POSIX_MADV_DONTNEED constant POSIX_MADV_DONTNEED
constant POSIX_TYPED_MEM_ALLOCATE optional-constant POSIX_TYPED_MEM_ALLOCATE
constant POSIX_TYPED_MEM_ALLOCATE_CONTIG optional-constant POSIX_TYPED_MEM_ALLOCATE_CONTIG
constant POSIX_TYPED_MEM_MAP_ALLOCATABLE optional-constant POSIX_TYPED_MEM_MAP_ALLOCATABLE
type size_t type size_t
type off_t type off_t
type mode_t type mode_t
type {struct posix_typedmem_info} optional-type {struct posix_typedmem_info}
optional-element {struct posix_typedmem_info} size_t posix_tmi_length
element {struct posix_typedmem_info} size_t posix_tmi_length
function int mlock (const void*, size_t) function int mlock (const void*, size_t)
function int mlockall (int) function int mlockall (int)
@ -42,9 +41,10 @@ function int msync (void*, size_t, int)
function int munlock (const void*, size_t) function int munlock (const void*, size_t)
function int munlockall (void) function int munlockall (void)
function int munmap (void*, size_t) function int munmap (void*, size_t)
function int posix_mem_offset (const void*, size_t, off_t*, size_t*, int*) function int posix_madvise (void*, size_t, int)
function int posix_typed_mem_get_info (int, struct posix_typed_mem_info*) optional-function int posix_mem_offset (const void*, size_t, off_t*, size_t*, int*)
function int posix_typed_mem_open (const char*, int, 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_open (const char*, int, mode_t)
function int shm_unlink (const char*) function int shm_unlink (const char*)

View File

@ -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

View File

@ -11,9 +11,8 @@ element {struct itimerval} {struct timeval} it_value
type time_t type time_t
type suseconds_t type suseconds_t
type {struct fd_set} type fd_set
element fd_set long fds_bits []
element {struct fd_set} long fds_bits []
constant ITIMER_REAL constant ITIMER_REAL
constant ITIMER_VIRTUAL constant ITIMER_VIRTUAL

View File

@ -2,13 +2,13 @@
#include <misc/sys/select.h> #include <misc/sys/select.h>
/* Now define the internal interfaces. */ /* Now define the internal interfaces. */
extern int __pselect (int __nfds, __fd_set *__readfds, extern int __pselect (int __nfds, fd_set *__readfds,
__fd_set *__writefds, __fd_set *__exceptfds, fd_set *__writefds, fd_set *__exceptfds,
const struct timespec *__timeout, const struct timespec *__timeout,
const __sigset_t *__sigmask); const __sigset_t *__sigmask);
extern int __select (int __nfds, __fd_set *__restrict __readfds, extern int __select (int __nfds, fd_set *__restrict __readfds,
__fd_set *__restrict __writefds, fd_set *__restrict __writefds,
__fd_set *__restrict __exceptfds, fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout); struct timeval *__restrict __timeout);
#endif #endif

View File

@ -1,5 +1,5 @@
/* `fd_set' type and related macros, and `select'/`pselect' declarations. /* `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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -33,58 +33,78 @@
/* Get __sigset_t. */ /* Get __sigset_t. */
#include <bits/sigset.h> #include <bits/sigset.h>
#ifndef __sigset_t_defined
# define __sigset_t_defined
typedef __sigset_t sigset_t;
#endif
/* Get definition of timer specification structures. */ /* Get definition of timer specification structures. */
#define __need_timespec #define __need_timespec
#include <time.h> #include <time.h>
#define __need_timeval
#include <sys/time.h>
__BEGIN_DECLS
/* This declaration puts `struct timeval' in global scope even if /* The fd_set member is required to be an array of longs. */
<sys/time.h> has not been included to define it. That way the typedef long int __fd_mask;
`select' prototype below will not conflict with a later definition
of `struct timeval'. */
struct timeval;
typedef __fd_mask 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))
/* Representation of a set of file descriptors. */ /* fd_set for select and pselect. */
typedef __fd_set fd_set; 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'. */ /* Maximum number of file descriptors in `fd_set'. */
#define FD_SETSIZE __FD_SETSIZE #define FD_SETSIZE __FD_SETSIZE
#ifdef __USE_MISC #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). */ /* Number of bits per word of `fd_set' (some code assumes this is 32). */
# define NFDBITS __NFDBITS # define NFDBITS __NFDBITS
#endif #endif
/* Access macros for `fd_set'. */ /* Access macros for `fd_set'. */
#define FD_SET(fd, fdsetp) __FD_SET ((fd), (fdsetp)) #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp)
#define FD_CLR(fd, fdsetp) __FD_CLR ((fd), (fdsetp)) #define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp)
#define FD_ISSET(fd, fdsetp) __FD_ISSET ((fd), (fdsetp)) #define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp)
#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
__BEGIN_DECLS
/* Check the first NFDS descriptors each in READFDS (if not NULL) for read /* 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 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 (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out
after waiting the interval specified therein. Returns the number of ready after waiting the interval specified therein. Returns the number of ready
descriptors, or -1 for errors. */ descriptors, or -1 for errors. */
extern int select (int __nfds, __fd_set *__restrict __readfds, extern int select (int __nfds, fd_set *__restrict __readfds,
__fd_set *__restrict __writefds, fd_set *__restrict __writefds,
__fd_set *__restrict __exceptfds, fd_set *__restrict __exceptfds,
struct timeval *__restrict __timeout) __THROW; struct timeval *__restrict __timeout) __THROW;
#ifdef __USE_GNU #ifdef __USE_XOPEN2K
/* XXX Once/if POSIX.1g gets official this prototype will be available
when defining __USE_POSIX. */
/* Same as above only that the TIMEOUT value is given with higher /* Same as above only that the TIMEOUT value is given with higher
resolution and a sigmask which is been set temporarily. This version resolution and a sigmask which is been set temporarily. This version
should be used. */ should be used. */
extern int pselect (int __nfds, __fd_set *__restrict __readfds, extern int pselect (int __nfds, fd_set *__restrict __readfds,
__fd_set *__restrict __writefds, fd_set *__restrict __writefds,
__fd_set *__restrict __exceptfds, fd_set *__restrict __exceptfds,
const struct timespec *__restrict __timeout, const struct timespec *__restrict __timeout,
const __sigset_t *__restrict __sigmask) __THROW; const __sigset_t *__restrict __sigmask) __THROW;
#endif #endif

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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 /* An integral type that can be modified atomically, without the
possibility of a signal arriving in the middle of the operation. */ 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
# if defined __need_sig_atomic_t || defined _SIGNAL_H # ifndef __sig_atomic_t_defined
# undef __need_sig_atomic_t
# define __sig_atomic_t_defined # define __sig_atomic_t_defined
typedef __sig_atomic_t sig_atomic_t; typedef __sig_atomic_t sig_atomic_t;
# endif # endif
# undef __need_sig_atomic_t
#endif #endif
#ifndef __sigset_t_defined #if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX)
# if defined __need_sigset_t || (defined _SIGNAL_H && defined __USE_POSIX) # ifndef __sigset_t_defined
# undef __need_sigset_t
# define __sigset_t_defined # define __sigset_t_defined
typedef __sigset_t sigset_t; typedef __sigset_t sigset_t;
# endif # endif
# undef __need_sigset_t
#endif #endif
#ifdef _SIGNAL_H #ifdef _SIGNAL_H

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -26,8 +26,8 @@
#define __FD_ZERO(s) \ #define __FD_ZERO(s) \
do { \ do { \
unsigned int __i; \ unsigned int __i; \
__fd_set *__arr = (s); \ fd_set *__arr = (s); \
for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
__FDS_BITS (__arr)[__i] = 0; \ __FDS_BITS (__arr)[__i] = 0; \
} while (0) } while (0)
#define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d)) #define __FD_SET(d, s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 256 #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'. */ /* XXX Used in `struct shmid_ds'. */
typedef unsigned short int __ipc_pid_t; typedef unsigned short int __ipc_pid_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -28,7 +28,7 @@
int __d0, __d1; \ int __d0, __d1; \
__asm__ __volatile__ ("cld; rep; stosl" \ __asm__ __volatile__ ("cld; rep; stosl" \
: "=c" (__d0), "=D" (__d1) \ : "=c" (__d0), "=D" (__d1) \
: "a" (0), "0" (sizeof (__fd_set) \ : "a" (0), "0" (sizeof (fd_set) \
/ sizeof (__fd_mask)), \ / sizeof (__fd_mask)), \
"1" (&__FDS_BITS (fdsp)[0]) \ "1" (&__FDS_BITS (fdsp)[0]) \
: "memory"); \ : "memory"); \
@ -61,8 +61,8 @@
# define __FD_ZERO(set) \ # define __FD_ZERO(set) \
do { \ do { \
unsigned int __i; \ unsigned int __i; \
__fd_set *__arr = (set); \ fd_set *__arr = (set); \
for (__i = 0; __i < sizeof (__fd_set) / sizeof (__fd_mask); ++__i) \ for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
__FDS_BITS (__arr)[__i] = 0; \ __FDS_BITS (__arr)[__i] = 0; \
} while (0) } while (0)
# define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d)) # define __FD_SET(d, set) (__FDS_BITS (set)[__FDELT (d)] |= __FDMASK (d))

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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'. */ /* Timer ID returned by `timer_create'. */
typedef int __timer_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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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; typedef long int __key_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 2048 #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; typedef long int __key_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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'. */ /* Used in `struct shmid_ds'. */
typedef int __ipc_pid_t; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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. */ /* Used in XTI. */
typedef long int __t_scalar_t; typedef long int __t_scalar_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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; typedef int __key_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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. */ /* type to represent block size. */
typedef long int __blksize_t; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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. */ /* Used in XTI. */
typedef int __t_scalar_t; typedef int __t_scalar_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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'. */ /* Timer ID returned by `timer_create'. */
typedef int __timer_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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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; typedef int __key_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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'. */ /* Timer ID returned by `timer_create'. */
typedef int __timer_t; 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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; typedef int __key_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or 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'. */ /* Number of descriptors that can fit in an `fd_set'. */
#define __FD_SETSIZE 1024 #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. */ /* Type to represent block size. */
typedef long int __blksize_t; typedef long int __blksize_t;

View File

@ -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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,12 +21,12 @@
#include <features.h> #include <features.h>
#include <time.h>
#include <sys/select.h>
#define __need_timeval #define __need_timeval
#include <bits/time.h> #include <bits/time.h>
#include <time.h>
#include <sys/select.h>
#ifndef __suseconds_t_defined #ifndef __suseconds_t_defined
typedef __suseconds_t suseconds_t; typedef __suseconds_t suseconds_t;
# define __suseconds_t_defined # define __suseconds_t_defined