mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +08: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:
parent
0e077a7eea
commit
bdcebfc4c7
45
ChangeLog
45
ChangeLog
@ -1,5 +1,50 @@
|
||||
2008-07-24 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* 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.
|
||||
|
||||
* elf/elf.h: Define AT_EXECFN.
|
||||
* elf/rtld.c [!__ASSUME_AT_EXECFN] (process_envvars): Don't handle
|
||||
LD_ORIGIN_PATH.
|
||||
|
@ -25,6 +25,7 @@ libc {
|
||||
GLIBC_2.6
|
||||
GLIBC_2.7
|
||||
GLIBC_2.8
|
||||
GLIBC_2.9
|
||||
%ifdef USE_IN_LIBIO
|
||||
HURD_CTHREADS_0.3
|
||||
%endif
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (C) 1992-2002,2003,2005,2006, 2007 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1992-2003,2005,2006,2007,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
|
||||
@ -40,7 +40,7 @@ routines := \
|
||||
open open64 openat openat64 close \
|
||||
read write lseek lseek64 access euidaccess faccessat \
|
||||
fcntl flock lockf lockf64 \
|
||||
dup dup2 pipe \
|
||||
dup dup2 dup3 pipe pipe2 \
|
||||
creat creat64 \
|
||||
chdir fchdir \
|
||||
getcwd getwd getdirname \
|
||||
|
@ -119,4 +119,7 @@ libc {
|
||||
GLIBC_2.7 {
|
||||
__open_2; __open64_2; __openat_2; __openat64_2;
|
||||
}
|
||||
GLIBC_2.9 {
|
||||
dup3; pipe2;
|
||||
}
|
||||
}
|
||||
|
48
io/dup3.c
Normal file
48
io/dup3.c
Normal file
@ -0,0 +1,48 @@
|
||||
/* 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 <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
/* Duplicate FD to FD2, closing the old FD2 and making FD2 be
|
||||
open the same file as FD is which setting flags according to
|
||||
FLAGS. Return FD2 or -1. */
|
||||
int
|
||||
dup3 (fd, fd2, flags)
|
||||
int fd;
|
||||
int fd2;
|
||||
int flags;
|
||||
{
|
||||
if (fd < 0 || fd2 < 0)
|
||||
{
|
||||
__set_errno (EBADF);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (fd == fd2)
|
||||
/* No way to check that they are valid. */
|
||||
return fd2;
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
stub_warning (dup3)
|
||||
|
||||
#include <stub-tag.h>
|
43
io/pipe2.c
Normal file
43
io/pipe2.c
Normal file
@ -0,0 +1,43 @@
|
||||
/* Copyright (C) 1991, 1995, 1996, 2002, 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 <unistd.h>
|
||||
#include <stddef.h>
|
||||
|
||||
/* Create a one-way communication channel (__pipe). If successful,
|
||||
two file descriptors are stored in PIPEDES; bytes written on
|
||||
PIPEDES[1] can be read from PIPEDES[0]. Apply FLAGS to the new
|
||||
file descriptors. Returns 0 if successful, -1 if not. */
|
||||
int
|
||||
pipe2 (pipedes, flags)
|
||||
int pipedes[2];
|
||||
int flags;
|
||||
{
|
||||
if (pipedes == NULL)
|
||||
{
|
||||
__set_errno (EINVAL);
|
||||
return -1;
|
||||
}
|
||||
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
}
|
||||
stub_warning (pipe2)
|
||||
|
||||
#include <stub-tag.h>
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1991-2006, 2007 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1991-2006, 2007, 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
|
||||
@ -383,6 +383,12 @@ extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
|
||||
Returns 0 if successful, -1 if not. */
|
||||
extern int pipe (int __pipedes[2]) __THROW __wur;
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Same as pipe but apply flags passed in FLAGS to the new file
|
||||
descriptors. */
|
||||
extern int pipe2 (int __pipedes[2], int __flags) __THROW __wur;
|
||||
#endif
|
||||
|
||||
/* Schedule an alarm. In SECONDS seconds, the process will get a SIGALRM.
|
||||
If SECONDS is zero, any currently scheduled alarm will be cancelled.
|
||||
The function returns the number of seconds remaining until the last
|
||||
@ -492,6 +498,12 @@ extern int dup (int __fd) __THROW __wur;
|
||||
/* Duplicate FD to FD2, closing FD2 and making it open on the same file. */
|
||||
extern int dup2 (int __fd, int __fd2) __THROW;
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* Duplicate FD to FD2, closing FD2 and making it open on the same
|
||||
file while setting flags according to FLAGS. */
|
||||
extern int dup3 (int __fd, int __fd2, int __flags) __THROW;
|
||||
#endif
|
||||
|
||||
/* NULL-terminated array of "NAME=VALUE" environment variables. */
|
||||
extern char **__environ;
|
||||
#ifdef __USE_GNU
|
||||
|
@ -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
|
||||
|
||||
|
@ -31,4 +31,7 @@ libc {
|
||||
# Addition from P1003.1-200x
|
||||
sockatmark;
|
||||
}
|
||||
GLIBC_2.9 {
|
||||
paccept;
|
||||
}
|
||||
}
|
||||
|
43
socket/paccept.c
Normal file
43
socket/paccept.c
Normal 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>
|
@ -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;
|
||||
|
@ -9,6 +9,7 @@ chroot - chroot i:s chroot
|
||||
close - close Ci:i __libc_close __close close
|
||||
dup - dup i:i __dup dup
|
||||
dup2 - dup2 i:ii __dup2 dup2
|
||||
dup3 - dup3 i:iii dup3
|
||||
fchdir - fchdir i:i __fchdir fchdir
|
||||
fcntl - fcntl Ci:iiF __libc_fcntl __fcntl __fcntl_internal fcntl
|
||||
fstatfs - fstatfs i:ip __fstatfs fstatfs
|
||||
|
@ -135,6 +135,9 @@ libc {
|
||||
GLIBC_2.8 {
|
||||
timerfd_create; timerfd_settime; timerfd_gettime;
|
||||
}
|
||||
GLIBC_2.9 {
|
||||
epoll_create2; inotify_init1;
|
||||
}
|
||||
GLIBC_PRIVATE {
|
||||
# functions used in other libraries
|
||||
__syscall_rt_sigqueueinfo;
|
||||
|
143
sysdeps/unix/sysv/linux/alpha/sys/epoll.h
Normal file
143
sysdeps/unix/sysv/linux/alpha/sys/epoll.h
Normal file
@ -0,0 +1,143 @@
|
||||
/* Copyright (C) 2002-2006, 2007, 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. */
|
||||
|
||||
#ifndef _SYS_EPOLL_H
|
||||
#define _SYS_EPOLL_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Get __sigset_t. */
|
||||
#include <bits/sigset.h>
|
||||
|
||||
#ifndef __sigset_t_defined
|
||||
# define __sigset_t_defined
|
||||
typedef __sigset_t sigset_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* Flags to be passed to epoll_create2. */
|
||||
enum
|
||||
{
|
||||
EPOLL_CLOEXEC = 010000000,
|
||||
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
|
||||
EPOLL_NONBLOCK = 04
|
||||
#define EPOLL_NONBLOCK EPOLL_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
enum EPOLL_EVENTS
|
||||
{
|
||||
EPOLLIN = 0x001,
|
||||
#define EPOLLIN EPOLLIN
|
||||
EPOLLPRI = 0x002,
|
||||
#define EPOLLPRI EPOLLPRI
|
||||
EPOLLOUT = 0x004,
|
||||
#define EPOLLOUT EPOLLOUT
|
||||
EPOLLRDNORM = 0x040,
|
||||
#define EPOLLRDNORM EPOLLRDNORM
|
||||
EPOLLRDBAND = 0x080,
|
||||
#define EPOLLRDBAND EPOLLRDBAND
|
||||
EPOLLWRNORM = 0x100,
|
||||
#define EPOLLWRNORM EPOLLWRNORM
|
||||
EPOLLWRBAND = 0x200,
|
||||
#define EPOLLWRBAND EPOLLWRBAND
|
||||
EPOLLMSG = 0x400,
|
||||
#define EPOLLMSG EPOLLMSG
|
||||
EPOLLERR = 0x008,
|
||||
#define EPOLLERR EPOLLERR
|
||||
EPOLLHUP = 0x010,
|
||||
#define EPOLLHUP EPOLLHUP
|
||||
EPOLLRDHUP = 0x2000,
|
||||
#define EPOLLRDHUP EPOLLRDHUP
|
||||
EPOLLONESHOT = (1 << 30),
|
||||
#define EPOLLONESHOT EPOLLONESHOT
|
||||
EPOLLET = (1 << 31)
|
||||
#define EPOLLET EPOLLET
|
||||
};
|
||||
|
||||
|
||||
/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
|
||||
#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
|
||||
#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
|
||||
#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
|
||||
|
||||
|
||||
typedef union epoll_data
|
||||
{
|
||||
void *ptr;
|
||||
int fd;
|
||||
uint32_t u32;
|
||||
uint64_t u64;
|
||||
} epoll_data_t;
|
||||
|
||||
struct epoll_event
|
||||
{
|
||||
uint32_t events; /* Epoll events */
|
||||
epoll_data_t data; /* User data variable */
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Creates an epoll instance. Returns an fd for the new instance.
|
||||
The "size" parameter is a hint specifying the number of file
|
||||
descriptors to be associated with the new instance. The fd
|
||||
returned by epoll_create() should be closed with close(). */
|
||||
extern int epoll_create (int __size) __THROW;
|
||||
|
||||
/* Same as epoll_create but with an additional FLAGS parameter. */
|
||||
extern int epoll_create2 (int __size, int __flags) __THROW;
|
||||
|
||||
|
||||
/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
|
||||
-1 in case of error ( the "errno" variable will contain the
|
||||
specific error code ) The "op" parameter is one of the EPOLL_CTL_*
|
||||
constants defined above. The "fd" parameter is the target of the
|
||||
operation. The "event" parameter describes which events the caller
|
||||
is interested in and any associated user data. */
|
||||
extern int epoll_ctl (int __epfd, int __op, int __fd,
|
||||
struct epoll_event *__event) __THROW;
|
||||
|
||||
|
||||
/* Wait for events on an epoll instance "epfd". Returns the number of
|
||||
triggered events returned in "events" buffer. Or -1 in case of
|
||||
error with the "errno" variable set to the specific error code. The
|
||||
"events" parameter is a buffer that will contain triggered
|
||||
events. The "maxevents" is the maximum number of events to be
|
||||
returned ( usually size of "events" ). The "timeout" parameter
|
||||
specifies the maximum wait time in milliseconds (-1 == infinite).
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int epoll_wait (int __epfd, struct epoll_event *__events,
|
||||
int __maxevents, int __timeout);
|
||||
|
||||
|
||||
/* Same as epoll_wait, but the thread's signal mask is temporarily
|
||||
and atomically replaced with the one provided as parameter.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int epoll_pwait (int __epfd, struct epoll_event *__events,
|
||||
int __maxevents, int __timeout,
|
||||
__const __sigset_t *__ss);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/epoll.h */
|
52
sysdeps/unix/sysv/linux/alpha/sys/eventfd.h
Normal file
52
sysdeps/unix/sysv/linux/alpha/sys/eventfd.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* Copyright (C) 2007, 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. */
|
||||
|
||||
#ifndef _SYS_EVENTFD_H
|
||||
#define _SYS_EVENTFD_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/* Type for event counter. */
|
||||
typedef uint64_t eventfd_t;
|
||||
|
||||
/* Flags for signalfd. */
|
||||
enum
|
||||
{
|
||||
EFD_CLOEXEC = 010000000,
|
||||
#define EFD_CLOEXEC EFD_CLOEXEC
|
||||
EFD_NONBLOCK = 04
|
||||
#define EFD_NONBLOCK EFD_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Return file descriptor for generic event channel. Set initial
|
||||
value to COUNT. */
|
||||
extern int eventfd (int __count, int __flags) __THROW;
|
||||
|
||||
/* Read event counter and possibly wait for events. */
|
||||
extern int eventfd_read (int __fd, eventfd_t *__value);
|
||||
|
||||
/* Increment event counter. */
|
||||
extern int eventfd_write (int __fd, eventfd_t value);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/eventfd.h */
|
105
sysdeps/unix/sysv/linux/alpha/sys/inotify.h
Normal file
105
sysdeps/unix/sysv/linux/alpha/sys/inotify.h
Normal file
@ -0,0 +1,105 @@
|
||||
/* Copyright (C) 2005, 2006, 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. */
|
||||
|
||||
#ifndef _SYS_INOTIFY_H
|
||||
#define _SYS_INOTIFY_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/* Flags for the parameter of inotify_init1. */
|
||||
enum
|
||||
{
|
||||
IN_CLOEXEC = 010000000,
|
||||
#define IN_CLOEXEC IN_CLOEXEC
|
||||
IN_NONBLOCK = 04
|
||||
#define IN_NONBLOCK IN_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
/* Structure describing an inotify event. */
|
||||
struct inotify_event
|
||||
{
|
||||
int wd; /* Watch descriptor. */
|
||||
uint32_t mask; /* Watch mask. */
|
||||
uint32_t cookie; /* Cookie to synchronize two events. */
|
||||
uint32_t len; /* Length (including NULs) of name. */
|
||||
char name __flexarr; /* Name. */
|
||||
};
|
||||
|
||||
|
||||
/* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH. */
|
||||
#define IN_ACCESS 0x00000001 /* File was accessed. */
|
||||
#define IN_MODIFY 0x00000002 /* File was modified. */
|
||||
#define IN_ATTRIB 0x00000004 /* Metadata changed. */
|
||||
#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed. */
|
||||
#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed. */
|
||||
#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
|
||||
#define IN_OPEN 0x00000020 /* File was opened. */
|
||||
#define IN_MOVED_FROM 0x00000040 /* File was moved from X. */
|
||||
#define IN_MOVED_TO 0x00000080 /* File was moved to Y. */
|
||||
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
|
||||
#define IN_CREATE 0x00000100 /* Subfile was created. */
|
||||
#define IN_DELETE 0x00000200 /* Subfile was deleted. */
|
||||
#define IN_DELETE_SELF 0x00000400 /* Self was deleted. */
|
||||
#define IN_MOVE_SELF 0x00000800 /* Self was moved. */
|
||||
|
||||
/* Events sent by the kernel. */
|
||||
#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted. */
|
||||
#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed. */
|
||||
#define IN_IGNORED 0x00008000 /* File was ignored. */
|
||||
|
||||
/* Helper events. */
|
||||
#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
|
||||
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
|
||||
|
||||
/* Special flags. */
|
||||
#define IN_ONLYDIR 0x01000000 /* Only watch the path if it is a
|
||||
directory. */
|
||||
#define IN_DONT_FOLLOW 0x02000000 /* Do not follow a sym link. */
|
||||
#define IN_MASK_ADD 0x20000000 /* Add to the mask of an already
|
||||
existing watch. */
|
||||
#define IN_ISDIR 0x40000000 /* Event occurred against dir. */
|
||||
#define IN_ONESHOT 0x80000000 /* Only send event once. */
|
||||
|
||||
/* All events which a program can wait on. */
|
||||
#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
|
||||
| IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
|
||||
| IN_MOVED_TO | IN_CREATE | IN_DELETE \
|
||||
| IN_DELETE_SELF | IN_MOVE_SELF)
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Create and initialize inotify instance. */
|
||||
extern int inotify_init (void) __THROW;
|
||||
|
||||
/* Create and initialize inotify instance. */
|
||||
extern int inotify_init1 (int __flags) __THROW;
|
||||
|
||||
/* Add watch of object NAME to inotify instance FD. Notify about
|
||||
events specified by MASK. */
|
||||
extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
|
||||
__THROW;
|
||||
|
||||
/* Remove the watch specified by WD from the inotify instance FD. */
|
||||
extern int inotify_rm_watch (int __fd, uint32_t __wd) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/inotify.h */
|
66
sysdeps/unix/sysv/linux/alpha/sys/signalfd.h
Normal file
66
sysdeps/unix/sysv/linux/alpha/sys/signalfd.h
Normal file
@ -0,0 +1,66 @@
|
||||
/* Copyright (C) 2007, 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. */
|
||||
|
||||
#ifndef _SYS_SIGNALFD_H
|
||||
#define _SYS_SIGNALFD_H 1
|
||||
|
||||
#define __need_sigset_t
|
||||
#include <signal.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
struct signalfd_siginfo
|
||||
{
|
||||
uint32_t ssi_signo;
|
||||
int32_t ssi_errno;
|
||||
int32_t ssi_code;
|
||||
uint32_t ssi_pid;
|
||||
uint32_t ssi_uid;
|
||||
int32_t ssi_fd;
|
||||
uint32_t ssi_tid;
|
||||
uint32_t ssi_band;
|
||||
uint32_t ssi_overrun;
|
||||
uint32_t ssi_trapno;
|
||||
int32_t ssi_status;
|
||||
int32_t ssi_int;
|
||||
uint64_t ssi_ptr;
|
||||
uint64_t ssi_utime;
|
||||
uint64_t ssi_stime;
|
||||
uint64_t ssi_addr;
|
||||
uint8_t __pad[48];
|
||||
};
|
||||
|
||||
/* Flags for signalfd. */
|
||||
enum
|
||||
{
|
||||
SFD_CLOEXEC = 010000000,
|
||||
#define SFD_CLOEXEC SFD_CLOEXEC
|
||||
SFD_NONBLOCK = 04
|
||||
#define SFD_NONBLOCK SFD_NONBLOCK
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Request notification for delivery of signals in MASK to be
|
||||
performed using descriptor FD.*/
|
||||
extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
|
||||
__nonnull ((2)) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/signalfd.h */
|
60
sysdeps/unix/sysv/linux/alpha/sys/timerfd.h
Normal file
60
sysdeps/unix/sysv/linux/alpha/sys/timerfd.h
Normal file
@ -0,0 +1,60 @@
|
||||
/* 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. */
|
||||
|
||||
#ifndef _SYS_TIMERFD_H
|
||||
#define _SYS_TIMERFD_H 1
|
||||
|
||||
#include <time.h>
|
||||
|
||||
|
||||
/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
|
||||
enum
|
||||
{
|
||||
TFD_CLOEXEC = 010000000,
|
||||
#define TFD_CLOEXEC TFD_CLOEXEC
|
||||
TFD_NONBLOCK = 04
|
||||
#define TFD_NONBLOCK TFD_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
|
||||
enum
|
||||
{
|
||||
TFD_TIMER_ABSTIME = 1 << 0
|
||||
#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Return file descriptor for new interval timer source. */
|
||||
extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW;
|
||||
|
||||
/* Set next expiration time of interval timer source UFD to UTMR. If
|
||||
FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
|
||||
absolute. Optionally return the old expiration time in OTMR. */
|
||||
extern int timerfd_settime (int __ufd, int __flags,
|
||||
__const struct itimerspec *__utmr,
|
||||
struct itimerspec *__otmr) __THROW;
|
||||
|
||||
/* Return the next expiration time of UFD. */
|
||||
extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/timerfd.h */
|
@ -52,12 +52,22 @@ enum __socket_type
|
||||
SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
|
||||
datagrams of fixed maximum length. */
|
||||
#define SOCK_SEQPACKET SOCK_SEQPACKET
|
||||
SOCK_DCCP = 6,
|
||||
#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */
|
||||
SOCK_PACKET = 10 /* Linux specific way of getting packets
|
||||
SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
|
||||
#define SOCK_DCCP SOCK_DCCP
|
||||
SOCK_PACKET = 10, /* Linux specific way of getting packets
|
||||
at the dev level. For writing rarp and
|
||||
other similar things on the user level. */
|
||||
#define SOCK_PACKET SOCK_PACKET
|
||||
|
||||
/* Flags to be ORed into the type parameter of socket and socketpair and
|
||||
used for the flags parameter of paccept. */
|
||||
|
||||
SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the
|
||||
new descriptor(s). */
|
||||
#define SOCK_CLOEXEC SOCK_CLOEXEC
|
||||
SOCK_NONBLOCK = 04000 /* Atomically mark descriptor(s) as
|
||||
non-blocking. */
|
||||
#define SOCK_NONBLOCK SOCK_NONBLOCK
|
||||
};
|
||||
|
||||
/* Protocol families. */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2007, 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
|
||||
@ -24,7 +24,10 @@
|
||||
int
|
||||
eventfd (int count, int flags)
|
||||
{
|
||||
/* The system call has no flag parameter which is bad. So we have
|
||||
#ifdef __NR_eventfd1
|
||||
return INLINE_SYSCALL (eventfd1, 1, flags);
|
||||
#else
|
||||
/* The old system call has no flag parameter which is bad. So we have
|
||||
to wait until we have to support to pass additional values to the
|
||||
kernel (sys_indirect) before implementing setting flags like
|
||||
O_NONBLOCK etc. */
|
||||
@ -34,10 +37,11 @@ eventfd (int count, int flags)
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef __NR_eventfd
|
||||
# ifdef __NR_eventfd
|
||||
return INLINE_SYSCALL (eventfd, 1, count);
|
||||
#else
|
||||
# else
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
135
sysdeps/unix/sysv/linux/i386/paccept.S
Normal file
135
sysdeps/unix/sysv/linux/i386/paccept.S
Normal file
@ -0,0 +1,135 @@
|
||||
/* Copyright (C) 1995-1998,2002,2003,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
|
||||
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 <sysdep-cancel.h>
|
||||
#include <socketcall.h>
|
||||
#include <tls.h>
|
||||
|
||||
#define _NSIG 64
|
||||
|
||||
#define P(a, b) P2(a, b)
|
||||
#define P2(a, b) a##b
|
||||
|
||||
.text
|
||||
/* The socket-oriented system calls are handled unusally in Linux.
|
||||
They are all gated through the single `socketcall' system call number.
|
||||
`socketcall' takes two arguments: the first is the subcode, specifying
|
||||
which socket function is being called; and the second is a pointer to
|
||||
the arguments to the specific function. */
|
||||
|
||||
ENTRY(do_paccept)
|
||||
#ifdef SOCKOP_paccept
|
||||
subl $6*4, %esp
|
||||
cfi_adjust_cfa_offset(6*4)
|
||||
|
||||
movl (%eax), %ecx
|
||||
movl %ecx, (%esp)
|
||||
movl 4(%eax), %ecx
|
||||
movl %ecx, 4(%esp)
|
||||
movl 8(%eax), %ecx
|
||||
movl %ecx, 8(%esp)
|
||||
movl 12(%eax), %ecx
|
||||
movl %ecx, 12(%esp)
|
||||
movl $(_NSIG / 8), 16(%esp)
|
||||
movl 16(%eax), %ecx
|
||||
movl %ecx, 20(%esp)
|
||||
|
||||
movl $SYS_ify(socketcall), %eax /* System call number in %eax. */
|
||||
|
||||
movl $SOCKOP_paccept, %ebx /* Subcode is first arg to syscall. */
|
||||
movl %esp, %ecx /* Address of args is 2nd arg. */
|
||||
|
||||
/* Do the system call trap. */
|
||||
ENTER_KERNEL
|
||||
|
||||
addl $6*4, %esp
|
||||
cfi_adjust_cfa_offset(-6*4)
|
||||
|
||||
/* %eax is < 0 if there was an error. */
|
||||
cmpl $-125, %eax
|
||||
jae SYSCALL_ERROR_LABEL
|
||||
#else
|
||||
movl $-ENOSYS, %eax
|
||||
jmp SYSCALL_ERROR_LABEL
|
||||
|
||||
.section .gnu.glibc-stub.paccept
|
||||
.previous
|
||||
.section .gnu.warning.paccept
|
||||
.string "warning: paccept is not implemented and will always fail"
|
||||
.previous
|
||||
#endif
|
||||
L(pseudo_end):
|
||||
ret
|
||||
PSEUDO_END(do_paccept)
|
||||
|
||||
|
||||
.globl paccept
|
||||
ENTRY (paccept)
|
||||
#ifdef CENABLE
|
||||
SINGLE_THREAD_P
|
||||
jne 1f
|
||||
#endif
|
||||
|
||||
/* Save registers. */
|
||||
movl %ebx, %edx
|
||||
cfi_register (3, 2)
|
||||
|
||||
lea 4(%esp), %eax
|
||||
call do_paccept
|
||||
|
||||
/* Restore registers. */
|
||||
movl %edx, %ebx
|
||||
cfi_restore (3)
|
||||
|
||||
ret
|
||||
|
||||
#ifdef CENABLE
|
||||
/* We need one more register. */
|
||||
1: pushl %esi
|
||||
cfi_adjust_cfa_offset(4)
|
||||
|
||||
/* Enable asynchronous cancellation. */
|
||||
CENABLE
|
||||
movl %eax, %esi
|
||||
cfi_offset(6, -8) /* %esi */
|
||||
|
||||
/* Save registers. */
|
||||
movl %ebx, %edx
|
||||
cfi_register (3, 2)
|
||||
|
||||
lea 8(%esp), %eax
|
||||
call do_paccept
|
||||
|
||||
/* Restore registers. */
|
||||
movl %edx, %ebx
|
||||
cfi_restore (3)
|
||||
|
||||
/* Restore the cancellation. */
|
||||
xchgl %esi, %eax
|
||||
CDISABLE
|
||||
|
||||
/* Restore registers. */
|
||||
movl %esi, %eax
|
||||
popl %esi
|
||||
cfi_restore (6)
|
||||
cfi_adjust_cfa_offset(-4)
|
||||
|
||||
/* Successful; return the syscall's value. */
|
||||
ret
|
||||
#endif
|
||||
PSEUDO_END (paccept)
|
54
sysdeps/unix/sysv/linux/paccept.c
Normal file
54
sysdeps/unix/sysv/linux/paccept.c
Normal file
@ -0,0 +1,54 @@
|
||||
/* Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2008.
|
||||
|
||||
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 <signal.h>
|
||||
#include <sys/socket.h>
|
||||
|
||||
#include <sysdep-cancel.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#ifdef __NR_paccept
|
||||
int
|
||||
paccept (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len,
|
||||
const __sigset_t *ss, int flags)
|
||||
{
|
||||
if (SINGLE_THREAD_P)
|
||||
return INLINE_SYSCALL (paccept, 6, fd, addr, addr_len, ss,
|
||||
_NSIG / 8, flags);
|
||||
|
||||
int oldtype = LIBC_CANCEL_ASYNC ();
|
||||
|
||||
int result = INLINE_SYSCALL (paccept, 6, fd, addr, addr_len, ss,
|
||||
_NSIG / 8, flags);
|
||||
|
||||
LIBC_CANCEL_RESET (oldtype);
|
||||
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
int
|
||||
paccept (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len,
|
||||
const __sigset_t *ss, int flags)
|
||||
{
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
stub_warning (epoll_pwait)
|
||||
}
|
||||
#endif
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2007, 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
|
||||
@ -25,7 +25,10 @@
|
||||
int
|
||||
signalfd (int fd, const sigset_t *mask, int flags)
|
||||
{
|
||||
/* The system call has no flag parameter which is bad. So we have
|
||||
#ifdef __NR_signalfd4
|
||||
return INLINE_SYSCALL (signalfd4, 4, fd, mask, _NSIG / 8, flags);
|
||||
#else
|
||||
/* The old system call has no flag parameter which is bad. So we have
|
||||
to wait until we have to support to pass additional values to the
|
||||
kernel (sys_indirect) before implementing setting flags like
|
||||
O_NONBLOCK etc. */
|
||||
@ -35,10 +38,11 @@ signalfd (int fd, const sigset_t *mask, int flags)
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifdef __NR_signalfd
|
||||
# ifdef __NR_signalfd
|
||||
return INLINE_SYSCALL (signalfd, 3, fd, mask, _NSIG / 8);
|
||||
#else
|
||||
# else
|
||||
__set_errno (ENOSYS);
|
||||
return -1;
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* ID for functions called via socketcall system call.
|
||||
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
||||
Copyright (C) 1995, 1996, 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
|
||||
@ -18,7 +18,6 @@
|
||||
02111-1307 USA. */
|
||||
|
||||
#ifndef _SYS_SOCKETCALL_H
|
||||
|
||||
#define _SYS_SOCKETCALL_H 1
|
||||
|
||||
/* Define unique numbers for the operations permitted on socket. Linux
|
||||
@ -44,5 +43,6 @@
|
||||
#define SOCKOP_getsockopt 15
|
||||
#define SOCKOP_sendmsg 16
|
||||
#define SOCKOP_recvmsg 17
|
||||
#define SOCKOP_paccept 18
|
||||
|
||||
#endif /* _SYS_SOCKETCALL_H */
|
||||
#endif /* sys/socketcall.h */
|
||||
|
391
sysdeps/unix/sysv/linux/sparc/bits/socket.h
Normal file
391
sysdeps/unix/sysv/linux/sparc/bits/socket.h
Normal file
@ -0,0 +1,391 @@
|
||||
/* System-specific socket constants and types. Linux/SPARC version.
|
||||
Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 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. */
|
||||
|
||||
#ifndef __BITS_SOCKET_H
|
||||
#define __BITS_SOCKET_H
|
||||
|
||||
#ifndef _SYS_SOCKET_H
|
||||
# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
|
||||
#endif
|
||||
|
||||
#define __need_size_t
|
||||
#include <stddef.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Type for length arguments in socket calls. */
|
||||
#ifndef __socklen_t_defined
|
||||
typedef __socklen_t socklen_t;
|
||||
# define __socklen_t_defined
|
||||
#endif
|
||||
|
||||
/* Types of sockets. */
|
||||
enum __socket_type
|
||||
{
|
||||
SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
|
||||
byte streams. */
|
||||
#define SOCK_STREAM SOCK_STREAM
|
||||
SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
|
||||
of fixed maximum length. */
|
||||
#define SOCK_DGRAM SOCK_DGRAM
|
||||
SOCK_RAW = 3, /* Raw protocol interface. */
|
||||
#define SOCK_RAW SOCK_RAW
|
||||
SOCK_RDM = 4, /* Reliably-delivered messages. */
|
||||
#define SOCK_RDM SOCK_RDM
|
||||
SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
|
||||
datagrams of fixed maximum length. */
|
||||
#define SOCK_SEQPACKET SOCK_SEQPACKET
|
||||
SOCK_DCCP = 6, /* Datagram Congestion Control Protocol. */
|
||||
#define SOCK_DCCP SOCK_DCCP
|
||||
SOCK_PACKET = 10, /* Linux specific way of getting packets
|
||||
at the dev level. For writing rarp and
|
||||
other similar things on the user level. */
|
||||
#define SOCK_PACKET SOCK_PACKET
|
||||
|
||||
/* Flags to be ORed into the type parameter of socket and socketpair. */
|
||||
|
||||
SOCK_CLOEXEC = 0x400000, /* Atomically set close-on-exec flag for the
|
||||
new descriptor(s). */
|
||||
#define SOCK_CLOEXEC SOCK_CLOEXEC
|
||||
SOCK_NONBLOCK = 0x4000 /* Atomically mark descriptor(s) as
|
||||
non-blocking. */
|
||||
#define SOCK_NONBLOCK SOCK_NONBLOCK
|
||||
};
|
||||
|
||||
/* Protocol families. */
|
||||
#define PF_UNSPEC 0 /* Unspecified. */
|
||||
#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
|
||||
#define PF_UNIX PF_LOCAL /* POSIX name for PF_LOCAL. */
|
||||
#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
|
||||
#define PF_INET 2 /* IP protocol family. */
|
||||
#define PF_AX25 3 /* Amateur Radio AX.25. */
|
||||
#define PF_IPX 4 /* Novell Internet Protocol. */
|
||||
#define PF_APPLETALK 5 /* Appletalk DDP. */
|
||||
#define PF_NETROM 6 /* Amateur radio NetROM. */
|
||||
#define PF_BRIDGE 7 /* Multiprotocol bridge. */
|
||||
#define PF_ATMPVC 8 /* ATM PVCs. */
|
||||
#define PF_X25 9 /* Reserved for X.25 project. */
|
||||
#define PF_INET6 10 /* IP version 6. */
|
||||
#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */
|
||||
#define PF_DECnet 12 /* Reserved for DECnet project. */
|
||||
#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */
|
||||
#define PF_SECURITY 14 /* Security callback pseudo AF. */
|
||||
#define PF_KEY 15 /* PF_KEY key management API. */
|
||||
#define PF_NETLINK 16
|
||||
#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
|
||||
#define PF_PACKET 17 /* Packet family. */
|
||||
#define PF_ASH 18 /* Ash. */
|
||||
#define PF_ECONET 19 /* Acorn Econet. */
|
||||
#define PF_ATMSVC 20 /* ATM SVCs. */
|
||||
#define PF_SNA 22 /* Linux SNA Project */
|
||||
#define PF_IRDA 23 /* IRDA sockets. */
|
||||
#define PF_PPPOX 24 /* PPPoX sockets. */
|
||||
#define PF_WANPIPE 25 /* Wanpipe API sockets. */
|
||||
#define PF_BLUETOOTH 31 /* Bluetooth sockets. */
|
||||
#define PF_IUCV 32 /* IUCV sockets. */
|
||||
#define PF_RXRPC 33 /* RxRPC sockets. */
|
||||
#define PF_MAX 34 /* For now.. */
|
||||
|
||||
/* Address families. */
|
||||
#define AF_UNSPEC PF_UNSPEC
|
||||
#define AF_LOCAL PF_LOCAL
|
||||
#define AF_UNIX PF_UNIX
|
||||
#define AF_FILE PF_FILE
|
||||
#define AF_INET PF_INET
|
||||
#define AF_AX25 PF_AX25
|
||||
#define AF_IPX PF_IPX
|
||||
#define AF_APPLETALK PF_APPLETALK
|
||||
#define AF_NETROM PF_NETROM
|
||||
#define AF_BRIDGE PF_BRIDGE
|
||||
#define AF_ATMPVC PF_ATMPVC
|
||||
#define AF_X25 PF_X25
|
||||
#define AF_INET6 PF_INET6
|
||||
#define AF_ROSE PF_ROSE
|
||||
#define AF_DECnet PF_DECnet
|
||||
#define AF_NETBEUI PF_NETBEUI
|
||||
#define AF_SECURITY PF_SECURITY
|
||||
#define AF_KEY PF_KEY
|
||||
#define AF_NETLINK PF_NETLINK
|
||||
#define AF_ROUTE PF_ROUTE
|
||||
#define AF_PACKET PF_PACKET
|
||||
#define AF_ASH PF_ASH
|
||||
#define AF_ECONET PF_ECONET
|
||||
#define AF_ATMSVC PF_ATMSVC
|
||||
#define AF_SNA PF_SNA
|
||||
#define AF_IRDA PF_IRDA
|
||||
#define AF_PPPOX PF_PPPOX
|
||||
#define AF_WANPIPE PF_WANPIPE
|
||||
#define AF_BLUETOOTH PF_BLUETOOTH
|
||||
#define AF_IUCV PF_IUCV
|
||||
#define AF_RXRPC PF_RXRPC
|
||||
#define AF_MAX PF_MAX
|
||||
|
||||
/* Socket level values. Others are defined in the appropriate headers.
|
||||
|
||||
XXX These definitions also should go into the appropriate headers as
|
||||
far as they are available. */
|
||||
#define SOL_RAW 255
|
||||
#define SOL_DECNET 261
|
||||
#define SOL_X25 262
|
||||
#define SOL_PACKET 263
|
||||
#define SOL_ATM 264 /* ATM layer (cell level). */
|
||||
#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */
|
||||
#define SOL_IRDA 266
|
||||
|
||||
/* Maximum queue length specifiable by listen. */
|
||||
#define SOMAXCONN 128
|
||||
|
||||
/* Get the definition of the macro to define the common sockaddr members. */
|
||||
#include <bits/sockaddr.h>
|
||||
|
||||
/* Structure describing a generic socket address. */
|
||||
struct sockaddr
|
||||
{
|
||||
__SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
|
||||
char sa_data[14]; /* Address data. */
|
||||
};
|
||||
|
||||
|
||||
/* Structure large enough to hold any socket address (with the historical
|
||||
exception of AF_UNIX). We reserve 128 bytes. */
|
||||
#define __ss_aligntype unsigned long int
|
||||
#define _SS_SIZE 128
|
||||
#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
|
||||
|
||||
struct sockaddr_storage
|
||||
{
|
||||
__SOCKADDR_COMMON (ss_); /* Address family, etc. */
|
||||
__ss_aligntype __ss_align; /* Force desired alignment. */
|
||||
char __ss_padding[_SS_PADSIZE];
|
||||
};
|
||||
|
||||
|
||||
/* Bits in the FLAGS argument to `send', `recv', et al. */
|
||||
enum
|
||||
{
|
||||
MSG_OOB = 0x01, /* Process out-of-band data. */
|
||||
#define MSG_OOB MSG_OOB
|
||||
MSG_PEEK = 0x02, /* Peek at incoming messages. */
|
||||
#define MSG_PEEK MSG_PEEK
|
||||
MSG_DONTROUTE = 0x04, /* Don't use local routing. */
|
||||
#define MSG_DONTROUTE MSG_DONTROUTE
|
||||
#ifdef __USE_GNU
|
||||
/* DECnet uses a different name. */
|
||||
MSG_TRYHARD = MSG_DONTROUTE,
|
||||
# define MSG_TRYHARD MSG_DONTROUTE
|
||||
#endif
|
||||
MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
|
||||
#define MSG_CTRUNC MSG_CTRUNC
|
||||
MSG_PROXY = 0x10, /* Supply or ask second address. */
|
||||
#define MSG_PROXY MSG_PROXY
|
||||
MSG_TRUNC = 0x20,
|
||||
#define MSG_TRUNC MSG_TRUNC
|
||||
MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
|
||||
#define MSG_DONTWAIT MSG_DONTWAIT
|
||||
MSG_EOR = 0x80, /* End of record. */
|
||||
#define MSG_EOR MSG_EOR
|
||||
MSG_WAITALL = 0x100, /* Wait for a full request. */
|
||||
#define MSG_WAITALL MSG_WAITALL
|
||||
MSG_FIN = 0x200,
|
||||
#define MSG_FIN MSG_FIN
|
||||
MSG_SYN = 0x400,
|
||||
#define MSG_SYN MSG_SYN
|
||||
MSG_CONFIRM = 0x800, /* Confirm path validity. */
|
||||
#define MSG_CONFIRM MSG_CONFIRM
|
||||
MSG_RST = 0x1000,
|
||||
#define MSG_RST MSG_RST
|
||||
MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
|
||||
#define MSG_ERRQUEUE MSG_ERRQUEUE
|
||||
MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
|
||||
#define MSG_NOSIGNAL MSG_NOSIGNAL
|
||||
MSG_MORE = 0x8000, /* Sender will send more. */
|
||||
#define MSG_MORE MSG_MORE
|
||||
|
||||
MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
|
||||
descriptor received through
|
||||
SCM_RIGHTS. */
|
||||
#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
|
||||
};
|
||||
|
||||
|
||||
/* Structure describing messages sent by
|
||||
`sendmsg' and received by `recvmsg'. */
|
||||
struct msghdr
|
||||
{
|
||||
void *msg_name; /* Address to send to/receive from. */
|
||||
socklen_t msg_namelen; /* Length of address data. */
|
||||
|
||||
struct iovec *msg_iov; /* Vector of data to send/receive into. */
|
||||
size_t msg_iovlen; /* Number of elements in the vector. */
|
||||
|
||||
void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
|
||||
size_t msg_controllen; /* Ancillary data buffer length.
|
||||
!! The type should be socklen_t but the
|
||||
definition of the kernel is incompatible
|
||||
with this. */
|
||||
|
||||
int msg_flags; /* Flags on received message. */
|
||||
};
|
||||
|
||||
/* Structure used for storage of ancillary data object information. */
|
||||
struct cmsghdr
|
||||
{
|
||||
size_t cmsg_len; /* Length of data in cmsg_data plus length
|
||||
of cmsghdr structure.
|
||||
!! The type should be socklen_t but the
|
||||
definition of the kernel is incompatible
|
||||
with this. */
|
||||
int cmsg_level; /* Originating protocol. */
|
||||
int cmsg_type; /* Protocol specific type. */
|
||||
#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
|
||||
__extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Ancillary data object manipulation macros. */
|
||||
#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
|
||||
# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
|
||||
#else
|
||||
# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
|
||||
#endif
|
||||
#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
|
||||
#define CMSG_FIRSTHDR(mhdr) \
|
||||
((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
|
||||
? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
|
||||
#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
|
||||
& (size_t) ~(sizeof (size_t) - 1))
|
||||
#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
|
||||
+ CMSG_ALIGN (sizeof (struct cmsghdr)))
|
||||
#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
|
||||
|
||||
extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
|
||||
struct cmsghdr *__cmsg) __THROW;
|
||||
#ifdef __USE_EXTERN_INLINES
|
||||
# ifndef _EXTERN_INLINE
|
||||
# define _EXTERN_INLINE __extern_inline
|
||||
# endif
|
||||
_EXTERN_INLINE struct cmsghdr *
|
||||
__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
|
||||
{
|
||||
if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
|
||||
/* The kernel header does this so there may be a reason. */
|
||||
return 0;
|
||||
|
||||
__cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
|
||||
+ CMSG_ALIGN (__cmsg->cmsg_len));
|
||||
if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
|
||||
+ __mhdr->msg_controllen)
|
||||
|| ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
|
||||
> ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
|
||||
/* No more entries. */
|
||||
return 0;
|
||||
return __cmsg;
|
||||
}
|
||||
#endif /* Use `extern inline'. */
|
||||
|
||||
/* Socket level message types. This must match the definitions in
|
||||
<linux/socket.h>. */
|
||||
enum
|
||||
{
|
||||
SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
|
||||
#define SCM_RIGHTS SCM_RIGHTS
|
||||
#ifdef __USE_BSD
|
||||
, SCM_CREDENTIALS = 0x02 /* Credentials passing. */
|
||||
# define SCM_CREDENTIALS SCM_CREDENTIALS
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef __USE_GNU
|
||||
/* User visible structure for SCM_CREDENTIALS message */
|
||||
struct ucred
|
||||
{
|
||||
pid_t pid; /* PID of sending process. */
|
||||
uid_t uid; /* UID of sending process. */
|
||||
gid_t gid; /* GID of sending process. */
|
||||
};
|
||||
#endif
|
||||
|
||||
/* Ugly workaround for unclean kernel headers. */
|
||||
#if !defined __USE_MISC && !defined __USE_GNU
|
||||
# ifndef FIOGETOWN
|
||||
# define __SYS_SOCKET_H_undef_FIOGETOWN
|
||||
# endif
|
||||
# ifndef FIOSETOWN
|
||||
# define __SYS_SOCKET_H_undef_FIOSETOWN
|
||||
# endif
|
||||
# ifndef SIOCATMARK
|
||||
# define __SYS_SOCKET_H_undef_SIOCATMARK
|
||||
# endif
|
||||
# ifndef SIOCGPGRP
|
||||
# define __SYS_SOCKET_H_undef_SIOCGPGRP
|
||||
# endif
|
||||
# ifndef SIOCGSTAMP
|
||||
# define __SYS_SOCKET_H_undef_SIOCGSTAMP
|
||||
# endif
|
||||
# ifndef SIOCGSTAMPNS
|
||||
# define __SYS_SOCKET_H_undef_SIOCGSTAMPNS
|
||||
# endif
|
||||
# ifndef SIOCSPGRP
|
||||
# define __SYS_SOCKET_H_undef_SIOCSPGRP
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Get socket manipulation related informations from kernel headers. */
|
||||
#include <asm/socket.h>
|
||||
|
||||
#if !defined __USE_MISC && !defined __USE_GNU
|
||||
# ifdef __SYS_SOCKET_H_undef_FIOGETOWN
|
||||
# undef __SYS_SOCKET_H_undef_FIOGETOWN
|
||||
# undef FIOGETOWN
|
||||
# endif
|
||||
# ifdef __SYS_SOCKET_H_undef_FIOSETOWN
|
||||
# undef __SYS_SOCKET_H_undef_FIOSETOWN
|
||||
# undef FIOSETOWN
|
||||
# endif
|
||||
# ifdef __SYS_SOCKET_H_undef_SIOCATMARK
|
||||
# undef __SYS_SOCKET_H_undef_SIOCATMARK
|
||||
# undef SIOCATMARK
|
||||
# endif
|
||||
# ifdef __SYS_SOCKET_H_undef_SIOCGPGRP
|
||||
# undef __SYS_SOCKET_H_undef_SIOCGPGRP
|
||||
# undef SIOCGPGRP
|
||||
# endif
|
||||
# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMP
|
||||
# undef __SYS_SOCKET_H_undef_SIOCGSTAMP
|
||||
# undef SIOCGSTAMP
|
||||
# endif
|
||||
# ifdef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
|
||||
# undef __SYS_SOCKET_H_undef_SIOCGSTAMPNS
|
||||
# undef SIOCGSTAMPNS
|
||||
# endif
|
||||
# ifdef __SYS_SOCKET_H_undef_SIOCSPGRP
|
||||
# undef __SYS_SOCKET_H_undef_SIOCSPGRP
|
||||
# undef SIOCSPGRP
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Structure used to manipulate the SO_LINGER option. */
|
||||
struct linger
|
||||
{
|
||||
int l_onoff; /* Nonzero to linger on close. */
|
||||
int l_linger; /* Time to linger. */
|
||||
};
|
||||
|
||||
#endif /* bits/socket.h */
|
143
sysdeps/unix/sysv/linux/sparc/sys/epoll.h
Normal file
143
sysdeps/unix/sysv/linux/sparc/sys/epoll.h
Normal file
@ -0,0 +1,143 @@
|
||||
/* Copyright (C) 2002-2006, 2007, 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. */
|
||||
|
||||
#ifndef _SYS_EPOLL_H
|
||||
#define _SYS_EPOLL_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
/* Get __sigset_t. */
|
||||
#include <bits/sigset.h>
|
||||
|
||||
#ifndef __sigset_t_defined
|
||||
# define __sigset_t_defined
|
||||
typedef __sigset_t sigset_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* Flags to be passed to epoll_create2. */
|
||||
enum
|
||||
{
|
||||
EPOLL_CLOEXEC = 0x400000,
|
||||
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
|
||||
EPOLL_NONBLOCK = 0x4000
|
||||
#define EPOLL_NONBLOCK EPOLL_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
enum EPOLL_EVENTS
|
||||
{
|
||||
EPOLLIN = 0x001,
|
||||
#define EPOLLIN EPOLLIN
|
||||
EPOLLPRI = 0x002,
|
||||
#define EPOLLPRI EPOLLPRI
|
||||
EPOLLOUT = 0x004,
|
||||
#define EPOLLOUT EPOLLOUT
|
||||
EPOLLRDNORM = 0x040,
|
||||
#define EPOLLRDNORM EPOLLRDNORM
|
||||
EPOLLRDBAND = 0x080,
|
||||
#define EPOLLRDBAND EPOLLRDBAND
|
||||
EPOLLWRNORM = 0x100,
|
||||
#define EPOLLWRNORM EPOLLWRNORM
|
||||
EPOLLWRBAND = 0x200,
|
||||
#define EPOLLWRBAND EPOLLWRBAND
|
||||
EPOLLMSG = 0x400,
|
||||
#define EPOLLMSG EPOLLMSG
|
||||
EPOLLERR = 0x008,
|
||||
#define EPOLLERR EPOLLERR
|
||||
EPOLLHUP = 0x010,
|
||||
#define EPOLLHUP EPOLLHUP
|
||||
EPOLLRDHUP = 0x2000,
|
||||
#define EPOLLRDHUP EPOLLRDHUP
|
||||
EPOLLONESHOT = (1 << 30),
|
||||
#define EPOLLONESHOT EPOLLONESHOT
|
||||
EPOLLET = (1 << 31)
|
||||
#define EPOLLET EPOLLET
|
||||
};
|
||||
|
||||
|
||||
/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
|
||||
#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
|
||||
#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
|
||||
#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
|
||||
|
||||
|
||||
typedef union epoll_data
|
||||
{
|
||||
void *ptr;
|
||||
int fd;
|
||||
uint32_t u32;
|
||||
uint64_t u64;
|
||||
} epoll_data_t;
|
||||
|
||||
struct epoll_event
|
||||
{
|
||||
uint32_t events; /* Epoll events */
|
||||
epoll_data_t data; /* User data variable */
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Creates an epoll instance. Returns an fd for the new instance.
|
||||
The "size" parameter is a hint specifying the number of file
|
||||
descriptors to be associated with the new instance. The fd
|
||||
returned by epoll_create() should be closed with close(). */
|
||||
extern int epoll_create (int __size) __THROW;
|
||||
|
||||
/* Same as epoll_create but with an additional FLAGS parameter. */
|
||||
extern int epoll_create2 (int __size, int __flags) __THROW;
|
||||
|
||||
|
||||
/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
|
||||
-1 in case of error ( the "errno" variable will contain the
|
||||
specific error code ) The "op" parameter is one of the EPOLL_CTL_*
|
||||
constants defined above. The "fd" parameter is the target of the
|
||||
operation. The "event" parameter describes which events the caller
|
||||
is interested in and any associated user data. */
|
||||
extern int epoll_ctl (int __epfd, int __op, int __fd,
|
||||
struct epoll_event *__event) __THROW;
|
||||
|
||||
|
||||
/* Wait for events on an epoll instance "epfd". Returns the number of
|
||||
triggered events returned in "events" buffer. Or -1 in case of
|
||||
error with the "errno" variable set to the specific error code. The
|
||||
"events" parameter is a buffer that will contain triggered
|
||||
events. The "maxevents" is the maximum number of events to be
|
||||
returned ( usually size of "events" ). The "timeout" parameter
|
||||
specifies the maximum wait time in milliseconds (-1 == infinite).
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int epoll_wait (int __epfd, struct epoll_event *__events,
|
||||
int __maxevents, int __timeout);
|
||||
|
||||
|
||||
/* Same as epoll_wait, but the thread's signal mask is temporarily
|
||||
and atomically replaced with the one provided as parameter.
|
||||
|
||||
This function is a cancellation point and therefore not marked with
|
||||
__THROW. */
|
||||
extern int epoll_pwait (int __epfd, struct epoll_event *__events,
|
||||
int __maxevents, int __timeout,
|
||||
__const __sigset_t *__ss);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/epoll.h */
|
52
sysdeps/unix/sysv/linux/sparc/sys/eventfd.h
Normal file
52
sysdeps/unix/sysv/linux/sparc/sys/eventfd.h
Normal file
@ -0,0 +1,52 @@
|
||||
/* Copyright (C) 2007, 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. */
|
||||
|
||||
#ifndef _SYS_EVENTFD_H
|
||||
#define _SYS_EVENTFD_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/* Type for event counter. */
|
||||
typedef uint64_t eventfd_t;
|
||||
|
||||
/* Flags for signalfd. */
|
||||
enum
|
||||
{
|
||||
EFD_CLOEXEC = 0x400000,
|
||||
#define EFD_CLOEXEC EFD_CLOEXEC
|
||||
EFD_NONBLOCK = 0x4000
|
||||
#define EFD_NONBLOCK EFD_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Return file descriptor for generic event channel. Set initial
|
||||
value to COUNT. */
|
||||
extern int eventfd (int __count, int __flags) __THROW;
|
||||
|
||||
/* Read event counter and possibly wait for events. */
|
||||
extern int eventfd_read (int __fd, eventfd_t *__value);
|
||||
|
||||
/* Increment event counter. */
|
||||
extern int eventfd_write (int __fd, eventfd_t value);
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/eventfd.h */
|
105
sysdeps/unix/sysv/linux/sparc/sys/inotify.h
Normal file
105
sysdeps/unix/sysv/linux/sparc/sys/inotify.h
Normal file
@ -0,0 +1,105 @@
|
||||
/* Copyright (C) 2005, 2006, 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. */
|
||||
|
||||
#ifndef _SYS_INOTIFY_H
|
||||
#define _SYS_INOTIFY_H 1
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/* Flags for the parameter of inotify_init1. */
|
||||
enum
|
||||
{
|
||||
IN_CLOEXEC = 0x400000,
|
||||
#define IN_CLOEXEC IN_CLOEXEC
|
||||
IN_NONBLOCK = 0x4000
|
||||
#define IN_NONBLOCK IN_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
/* Structure describing an inotify event. */
|
||||
struct inotify_event
|
||||
{
|
||||
int wd; /* Watch descriptor. */
|
||||
uint32_t mask; /* Watch mask. */
|
||||
uint32_t cookie; /* Cookie to synchronize two events. */
|
||||
uint32_t len; /* Length (including NULs) of name. */
|
||||
char name __flexarr; /* Name. */
|
||||
};
|
||||
|
||||
|
||||
/* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH. */
|
||||
#define IN_ACCESS 0x00000001 /* File was accessed. */
|
||||
#define IN_MODIFY 0x00000002 /* File was modified. */
|
||||
#define IN_ATTRIB 0x00000004 /* Metadata changed. */
|
||||
#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed. */
|
||||
#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed. */
|
||||
#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
|
||||
#define IN_OPEN 0x00000020 /* File was opened. */
|
||||
#define IN_MOVED_FROM 0x00000040 /* File was moved from X. */
|
||||
#define IN_MOVED_TO 0x00000080 /* File was moved to Y. */
|
||||
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
|
||||
#define IN_CREATE 0x00000100 /* Subfile was created. */
|
||||
#define IN_DELETE 0x00000200 /* Subfile was deleted. */
|
||||
#define IN_DELETE_SELF 0x00000400 /* Self was deleted. */
|
||||
#define IN_MOVE_SELF 0x00000800 /* Self was moved. */
|
||||
|
||||
/* Events sent by the kernel. */
|
||||
#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted. */
|
||||
#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed. */
|
||||
#define IN_IGNORED 0x00008000 /* File was ignored. */
|
||||
|
||||
/* Helper events. */
|
||||
#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close. */
|
||||
#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* Moves. */
|
||||
|
||||
/* Special flags. */
|
||||
#define IN_ONLYDIR 0x01000000 /* Only watch the path if it is a
|
||||
directory. */
|
||||
#define IN_DONT_FOLLOW 0x02000000 /* Do not follow a sym link. */
|
||||
#define IN_MASK_ADD 0x20000000 /* Add to the mask of an already
|
||||
existing watch. */
|
||||
#define IN_ISDIR 0x40000000 /* Event occurred against dir. */
|
||||
#define IN_ONESHOT 0x80000000 /* Only send event once. */
|
||||
|
||||
/* All events which a program can wait on. */
|
||||
#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE \
|
||||
| IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM \
|
||||
| IN_MOVED_TO | IN_CREATE | IN_DELETE \
|
||||
| IN_DELETE_SELF | IN_MOVE_SELF)
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Create and initialize inotify instance. */
|
||||
extern int inotify_init (void) __THROW;
|
||||
|
||||
/* Create and initialize inotify instance. */
|
||||
extern int inotify_init1 (int __flags) __THROW;
|
||||
|
||||
/* Add watch of object NAME to inotify instance FD. Notify about
|
||||
events specified by MASK. */
|
||||
extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
|
||||
__THROW;
|
||||
|
||||
/* Remove the watch specified by WD from the inotify instance FD. */
|
||||
extern int inotify_rm_watch (int __fd, uint32_t __wd) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/inotify.h */
|
66
sysdeps/unix/sysv/linux/sparc/sys/signalfd.h
Normal file
66
sysdeps/unix/sysv/linux/sparc/sys/signalfd.h
Normal file
@ -0,0 +1,66 @@
|
||||
/* Copyright (C) 2007, 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. */
|
||||
|
||||
#ifndef _SYS_SIGNALFD_H
|
||||
#define _SYS_SIGNALFD_H 1
|
||||
|
||||
#define __need_sigset_t
|
||||
#include <signal.h>
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
struct signalfd_siginfo
|
||||
{
|
||||
uint32_t ssi_signo;
|
||||
int32_t ssi_errno;
|
||||
int32_t ssi_code;
|
||||
uint32_t ssi_pid;
|
||||
uint32_t ssi_uid;
|
||||
int32_t ssi_fd;
|
||||
uint32_t ssi_tid;
|
||||
uint32_t ssi_band;
|
||||
uint32_t ssi_overrun;
|
||||
uint32_t ssi_trapno;
|
||||
int32_t ssi_status;
|
||||
int32_t ssi_int;
|
||||
uint64_t ssi_ptr;
|
||||
uint64_t ssi_utime;
|
||||
uint64_t ssi_stime;
|
||||
uint64_t ssi_addr;
|
||||
uint8_t __pad[48];
|
||||
};
|
||||
|
||||
/* Flags for signalfd. */
|
||||
enum
|
||||
{
|
||||
SFD_CLOEXEC = 0x400000,
|
||||
#define SFD_CLOEXEC SFD_CLOEXEC
|
||||
SFD_NONBLOCK = 0x4000
|
||||
#define SFD_NONBLOCK SFD_NONBLOCK
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Request notification for delivery of signals in MASK to be
|
||||
performed using descriptor FD.*/
|
||||
extern int signalfd (int __fd, const sigset_t *__mask, int __flags)
|
||||
__nonnull ((2)) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/signalfd.h */
|
60
sysdeps/unix/sysv/linux/sparc/sys/timerfd.h
Normal file
60
sysdeps/unix/sysv/linux/sparc/sys/timerfd.h
Normal file
@ -0,0 +1,60 @@
|
||||
/* 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. */
|
||||
|
||||
#ifndef _SYS_TIMERFD_H
|
||||
#define _SYS_TIMERFD_H 1
|
||||
|
||||
#include <time.h>
|
||||
|
||||
|
||||
/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
|
||||
enum
|
||||
{
|
||||
TFD_CLOEXEC = 0x400000,
|
||||
#define TFD_CLOEXEC TFD_CLOEXEC
|
||||
TFD_NONBLOCK = 0x4000
|
||||
#define TFD_NONBLOCK TFD_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
|
||||
enum
|
||||
{
|
||||
TFD_TIMER_ABSTIME = 1 << 0
|
||||
#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
/* Return file descriptor for new interval timer source. */
|
||||
extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW;
|
||||
|
||||
/* Set next expiration time of interval timer source UFD to UTMR. If
|
||||
FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is
|
||||
absolute. Optionally return the old expiration time in OTMR. */
|
||||
extern int timerfd_settime (int __ufd, int __flags,
|
||||
__const struct itimerspec *__utmr,
|
||||
struct itimerspec *__otmr) __THROW;
|
||||
|
||||
/* Return the next expiration time of UFD. */
|
||||
extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
|
||||
|
||||
__END_DECLS
|
||||
|
||||
#endif /* sys/timerfd.h */
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002-2006, 2007 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002-2006, 2007, 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
|
||||
@ -31,6 +31,16 @@ typedef __sigset_t sigset_t;
|
||||
#endif
|
||||
|
||||
|
||||
/* Flags to be passed to epoll_create2. */
|
||||
enum
|
||||
{
|
||||
EPOLL_CLOEXEC = 02000000,
|
||||
#define EPOLL_CLOEXEC EPOLL_CLOEXEC
|
||||
EPOLL_NONBLOCK = 04000
|
||||
#define EPOLL_NONBLOCK EPOLL_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
enum EPOLL_EVENTS
|
||||
{
|
||||
EPOLLIN = 0x001,
|
||||
@ -63,9 +73,9 @@ enum EPOLL_EVENTS
|
||||
|
||||
|
||||
/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
|
||||
#define EPOLL_CTL_ADD 1 /* Add a file decriptor to the interface. */
|
||||
#define EPOLL_CTL_DEL 2 /* Remove a file decriptor from the interface. */
|
||||
#define EPOLL_CTL_MOD 3 /* Change file decriptor epoll_event structure. */
|
||||
#define EPOLL_CTL_ADD 1 /* Add a file descriptor to the interface. */
|
||||
#define EPOLL_CTL_DEL 2 /* Remove a file descriptor from the interface. */
|
||||
#define EPOLL_CTL_MOD 3 /* Change file descriptor epoll_event structure. */
|
||||
|
||||
|
||||
typedef union epoll_data
|
||||
@ -91,6 +101,9 @@ __BEGIN_DECLS
|
||||
returned by epoll_create() should be closed with close(). */
|
||||
extern int epoll_create (int __size) __THROW;
|
||||
|
||||
/* Same as epoll_create but with an additional FLAGS parameter. */
|
||||
extern int epoll_create2 (int __size, int __flags) __THROW;
|
||||
|
||||
|
||||
/* Manipulate an epoll instance "epfd". Returns 0 in case of success,
|
||||
-1 in case of error ( the "errno" variable will contain the
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2007, 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
|
||||
@ -25,6 +25,15 @@
|
||||
/* Type for event counter. */
|
||||
typedef uint64_t eventfd_t;
|
||||
|
||||
/* Flags for signalfd. */
|
||||
enum
|
||||
{
|
||||
EFD_CLOEXEC = 02000000,
|
||||
#define EFD_CLOEXEC EFD_CLOEXEC
|
||||
EFD_NONBLOCK = 04000
|
||||
#define EFD_NONBLOCK EFD_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2005, 2006 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2005, 2006, 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
|
||||
@ -22,6 +22,16 @@
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
/* Flags for the parameter of inotify_init1. */
|
||||
enum
|
||||
{
|
||||
IN_CLOEXEC = 02000000,
|
||||
#define IN_CLOEXEC IN_CLOEXEC
|
||||
IN_NONBLOCK = 04000
|
||||
#define IN_NONBLOCK IN_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
/* Structure describing an inotify event. */
|
||||
struct inotify_event
|
||||
{
|
||||
@ -79,6 +89,9 @@ __BEGIN_DECLS
|
||||
/* Create and initialize inotify instance. */
|
||||
extern int inotify_init (void) __THROW;
|
||||
|
||||
/* Create and initialize inotify instance. */
|
||||
extern int inotify_init1 (int __flags) __THROW;
|
||||
|
||||
/* Add watch of object NAME to inotify instance FD. Notify about
|
||||
events specified by MASK. */
|
||||
extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
|
||||
|
@ -45,6 +45,14 @@ struct signalfd_siginfo
|
||||
uint8_t __pad[48];
|
||||
};
|
||||
|
||||
/* Flags for signalfd. */
|
||||
enum
|
||||
{
|
||||
SFD_CLOEXEC = 02000000,
|
||||
#define SFD_CLOEXEC SFD_CLOEXEC
|
||||
SFD_NONBLOCK = 04000
|
||||
#define SFD_NONBLOCK SFD_NONBLOCK
|
||||
};
|
||||
|
||||
__BEGIN_DECLS
|
||||
|
||||
|
@ -22,6 +22,16 @@
|
||||
#include <time.h>
|
||||
|
||||
|
||||
/* Bits to be set in the FLAGS parameter of `timerfd_create'. */
|
||||
enum
|
||||
{
|
||||
TFD_CLOEXEC = 02000000,
|
||||
#define TFD_CLOEXEC TFD_CLOEXEC
|
||||
TFD_NONBLOCK = 04000
|
||||
#define TFD_NONBLOCK TFD_NONBLOCK
|
||||
};
|
||||
|
||||
|
||||
/* Bits to be set in the FLAGS parameter of `timerfd_settime'. */
|
||||
enum
|
||||
{
|
||||
|
@ -8,6 +8,7 @@ creat - creat Ci:si __libc_creat creat
|
||||
create_module EXTRA create_module 3 create_module
|
||||
delete_module EXTRA delete_module 3 delete_module
|
||||
epoll_create EXTRA epoll_create i:i epoll_create
|
||||
epoll_create2 EXTRA epoll_create2 i:ii epoll_create2
|
||||
epoll_ctl EXTRA epoll_ctl i:iiip epoll_ctl
|
||||
epoll_wait EXTRA epoll_wait Ci:ipii epoll_wait
|
||||
fdatasync - fdatasync Ci:i fdatasync
|
||||
@ -26,6 +27,7 @@ getsid - getsid i:i getsid
|
||||
init_module EXTRA init_module 5 init_module
|
||||
inotify_add_watch EXTRA inotify_add_watch i:isi inotify_add_watch
|
||||
inotify_init EXTRA inotify_init i: inotify_init
|
||||
inotify_init1 EXTRA inotify_init1 i:I inotify_init1
|
||||
inotify_rm_watch EXTRA inotify_rm_watch i:ii inotify_rm_watch
|
||||
ioperm - ioperm i:iii ioperm
|
||||
iopl - iopl i:i iopl
|
||||
@ -45,6 +47,7 @@ nfsservctl EXTRA nfsservctl i:ipp nfsservctl
|
||||
pause - pause Ci: __libc_pause pause
|
||||
personality EXTRA personality i:i __personality personality
|
||||
pipe - pipe i:f __pipe pipe
|
||||
pipe2 - pipe2 i:fi pipe2
|
||||
pivot_root EXTRA pivot_root i:ss pivot_root
|
||||
prctl EXTRA prctl i:iiiii __prctl prctl
|
||||
putpmsg - putpmsg i:ippii putpmsg
|
||||
|
Loading…
Reference in New Issue
Block a user