1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00

* Versions.def (glibc): Add GLIBC_2.9.

* io/Makefile (routines): Add dup3 and pipe2.
	* io/Versions [glibc] (GLIBC_2.9): Add dup3 and pipe2.
	* io/dup3.c: New file.
	* io/pipe2.c: New file.
	* posix/unistd.h: Declare dup3 and pipe2.
	* socket/Makefile (routines): Add paccept.
	* socket/Versions [glibc] (GLIBC_2.9): Add paccept.
	* socket/paccept.c: New file.
	* socket/sys/socket.h: Declare paccept.
	* sysdeps/unix/syscalls.list: Add entry for dup3.
	* sysdeps/unix/sysv/linux/Versions [glibc] (GLIBC_2.9): Add
	epoll_create2 and inotify_init1.
	* sysdeps/unix/sysv/linux/eventfd.c: Use eventfd1 syscall if possible.
	* sysdeps/unix/sysv/linux/paccept.c: New file.
	* sysdeps/unix/sysv/linux/signalfd.c: Use signalfd4 syscall if
	possible.
	* sysdeps/unix/sysv/linux/socketcall.h: Add SOCKOP_paccept.
	* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_create2,
	inotify_init1, and pipe2 entries.
	* sysdeps/unix/sysv/linux/alpha/sys/epoll.h: New file.
	* sysdeps/unix/sysv/linux/alpha/sys/eventfd.h: New file.
	* sysdeps/unix/sysv/linux/alpha/sys/inotify.h: New file.
	* sysdeps/unix/sysv/linux/alpha/sys/signalfd.h: New file.
	* sysdeps/unix/sysv/linux/alpha/sys/timerfd.h: New file.
	* sysdeps/unix/sysv/linux/bits/socket.h: Define SOCK_CLOEXEC and
	SOCK_NONBLOCK.
	* sysdeps/unix/sysv/linux/i386/paccept.S: New file.
	* sysdeps/unix/sysv/linux/sparc/sys/epoll.h: New file.
	* sysdeps/unix/sysv/linux/sparc/sys/eventfd.h: New file.
	* sysdeps/unix/sysv/linux/sparc/sys/inotify.h: New file.
	* sysdeps/unix/sysv/linux/sparc/sys/signalfd.h: New file.
	* sysdeps/unix/sysv/linux/sparc/sys/timerfd.h: New file.
	* sysdeps/unix/sysv/linux/sparc/bits/socket.h: New file.
	* sysdeps/unix/sysv/linux/sys/epoll.h: Define EPOLL_CLOEXEC and
	EPOLL_NONBLOCK.  Declare epoll_create2.
	* sysdeps/unix/sysv/linux/sys/eventfd.h: Define EFD_CLOEXEC and
	EFD_NONBLOCK.
	* sysdeps/unix/sysv/linux/sys/inotify.h: Define IN_CLOEXEC and
	IN_NONBLOCK.  Declare inotify_init1.
	* sysdeps/unix/sysv/linux/sys/signalfd.h: Define SFD_CLOEXEC and
	SFD_NONBLOCK.
	* sysdeps/unix/sysv/linux/sys/timerfd.h: Define TFD_CLOEXEC and
	TFD_NONBLOCK.
This commit is contained in:
Ulrich Drepper
2008-07-25 04:51:56 +00:00
parent 0e077a7eea
commit bdcebfc4c7
36 changed files with 1750 additions and 26 deletions

View File

@ -1,4 +1,4 @@
# Copyright (C) 1991,1995-2001,2005 Free Software Foundation, Inc.
# Copyright (C) 1991,1995-2001,2005,2008 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
@ -27,7 +27,7 @@ headers := sys/socket.h sys/un.h bits/sockaddr.h bits/socket.h \
routines := accept bind connect getpeername getsockname getsockopt \
listen recv recvfrom recvmsg send sendmsg sendto \
setsockopt shutdown socket socketpair isfdtype opensock \
sockatmark
sockatmark paccept
distribute := ifreq.h

View File

@ -31,4 +31,7 @@ libc {
# Addition from P1003.1-200x
sockatmark;
}
GLIBC_2.9 {
paccept;
}
}

43
socket/paccept.c Normal file
View File

@ -0,0 +1,43 @@
/* Copyright (C) 2008 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
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <errno.h>
#include <sys/socket.h>
/* Await a connection on socket FD.
When a connection arrives, open a new socket to communicate with it,
set *ADDR (which is *ADDR_LEN bytes long) to the address of the connecting
peer and *ADDR_LEN to the address's actual length, and return the
new socket's descriptor, or -1 for errors. SS is installed as
the thread's signal mask and FLAGS are additional flags. */
int
paccept (fd, addr, addr_len, ss, flags)
int fd;
__SOCKADDR_ARG addr;
socklen_t *addr_len;
const __sigset_t *ss;
int flags;
{
__set_errno (ENOSYS);
return -1;
}
libc_hidden_def (paccept)
stub_warning (paccept)
#include <stub-tag.h>

View File

@ -1,5 +1,5 @@
/* Declarations of socket constants, types, and functions.
Copyright (C) 1991,92,1994-2001,2003,2005,2007
Copyright (C) 1991,92,1994-2001,2003,2005,2007,2008
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@ -28,6 +28,10 @@ __BEGIN_DECLS
#include <sys/uio.h>
#define __need_size_t
#include <stddef.h>
#ifdef __USE_GNU
/* Get the __sigset_t definition. */
# include <bits/sigset.h>
#endif
/* This operating system-specific header file defines the SOCK_*, PF_*,
@ -210,6 +214,18 @@ extern int listen (int __fd, int __n) __THROW;
extern int accept (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len);
#ifdef __USE_GNU
/* Variant of the accept function which takes additional parameters. The
MASK parameter allows to change the thread signal mask for the duration
of the call. The FLAGS parameter allows to pass additional flags.
This function is a cancellation point and therefore not marked with
__THROW. */
extern int paccept (int __fd, __SOCKADDR_ARG __addr,
socklen_t *__restrict __addr_len,
__const __sigset_t *__restrict __ss, int __flags);
#endif
/* Shut down all or part of the connection open on socket FD.
HOW determines what to shut down:
SHUT_RD = No more receptions;