aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-10-11 20:34:59 +0000
committerUlrich Drepper <drepper@redhat.com>2006-10-11 20:34:59 +0000
commit46c38bd7dc34e104870982c64dae364b1a28b549 (patch)
tree99c02529a6eed24a5ca9c84a3e08cf9cb1047fff
parent37fb75957cc01c7bb52d625d6fcdf19452cb224e (diff)
downloadglibc-46c38bd7dc34e104870982c64dae364b1a28b549.tar
glibc-46c38bd7dc34e104870982c64dae364b1a28b549.tar.gz
glibc-46c38bd7dc34e104870982c64dae364b1a28b549.tar.bz2
glibc-46c38bd7dc34e104870982c64dae364b1a28b549.zip
* sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
* sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait. * sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for version GLIBC_2.6. * Versions.def: Add GLIBC_2.6 for libc. * sysdeps/unix/sysv/linux/i386/sysdep.h (DOARGS_6): Fix offset.
-rw-r--r--ChangeLog8
-rw-r--r--NEWS7
-rw-r--r--Versions.def1
-rw-r--r--nptl/ChangeLog3
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h12
-rw-r--r--sysdeps/unix/sysv/linux/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h2
-rw-r--r--sysdeps/unix/sysv/linux/sys/epoll.h20
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list1
9 files changed, 53 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 44ab28c669..2d9919de38 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2006-10-11 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/syscalls.list: Add epoll_pwait.
+ * sysdeps/unix/sysv/linux/sys/epoll.h: Declare epoll_pwait.
+ * sysdeps/unix/sysv/linux/Versions (libc): Add epoll_pwait for
+ version GLIBC_2.6.
+ * Versions.def: Add GLIBC_2.6 for libc.
+
+ * sysdeps/unix/sysv/linux/i386/sysdep.h (DOARGS_6): Fix offset.
+
* sysdeps/i386/i486/bits/atomic.h: Add catomic_* support.
2006-10-11 Jakub Jelinek <jakub@redhat.com>
diff --git a/NEWS b/NEWS
index 83b6a5e291..f078f3cc63 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,15 @@
-GNU C Library NEWS -- history of user-visible changes. 2006-09-29
+GNU C Library NEWS -- history of user-visible changes. 2006-10-11
Copyright (C) 1992-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
+Version 2.6
+
+* New Linux interfaces: epoll_pwait.
+
+
Version 2.5
* For Linux, the sorting of addresses returned by getaddrinfo now also
diff --git a/Versions.def b/Versions.def
index f40f351801..254208469f 100644
--- a/Versions.def
+++ b/Versions.def
@@ -22,6 +22,7 @@ libc {
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
+ GLIBC_2.6
%ifdef USE_IN_LIBIO
HURD_CTHREADS_0.3
%endif
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index a8bd0fd45a..f00f066479 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,5 +1,8 @@
2006-10-11 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/unix/sysv/linux/i386/sysdep-cancel.h: Add support for
+ cancelable syscalls with six parameters.
+
* sysdeps/unix/sysv/linux/rtld-lowlevel.h: Use catomic_*
operations instead of atomic_*.
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
index 147f5c8470..2d1ad3d7cc 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
+++ b/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2002.
@@ -58,6 +58,7 @@
# define SAVE_OLDTYPE_3 SAVE_OLDTYPE_2
# define SAVE_OLDTYPE_4 SAVE_OLDTYPE_2
# define SAVE_OLDTYPE_5 SAVE_OLDTYPE_2
+# define SAVE_OLDTYPE_6 SAVE_OLDTYPE_2
# define PUSHCARGS_0 /* No arguments to push. */
# define DOCARGS_0 /* No arguments to frob. */
@@ -101,6 +102,14 @@
# define _POPCARGS_5 _POPCARGS_4; popl %edi; \
cfi_adjust_cfa_offset (-4); cfi_restore (edi);
+# define PUSHCARGS_6 _PUSHCARGS_6
+# define DOCARGS_6 _DOARGS_6 (44)
+# define POPCARGS_6 _POPCARGS_6
+# define _PUSHCARGS_6 pushl %ebp; cfi_adjust_cfa_offset (4); \
+ cfi_rel_offset (ebp, 0); _PUSHCARGS_5
+# define _POPCARGS_6 _POPCARGS_5; popl %ebp; \
+ cfi_adjust_cfa_offset (-4); cfi_restore (ebp);
+
# ifdef IS_IN_libpthread
# define CENABLE call __pthread_enable_asynccancel;
# define CDISABLE call __pthread_disable_asynccancel
@@ -122,6 +131,7 @@
# define POPSTATE_3 POPSTATE_2
# define POPSTATE_4 POPSTATE_3
# define POPSTATE_5 POPSTATE_4
+# define POPSTATE_6 POPSTATE_5
# ifndef __ASSEMBLER__
# define SINGLE_THREAD_P \
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 7c015b1d62..137b44c2b8 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -126,6 +126,9 @@ libc {
GLIBC_2.5 {
splice; sync_file_range; tee; vmsplice;
}
+ GLIBC_2.6 {
+ epoll_pwait;
+ }
GLIBC_PRIVATE {
# functions used in other libraries
__syscall_rt_sigqueueinfo;
diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h
index 90423d8434..5286676fc1 100644
--- a/sysdeps/unix/sysv/linux/i386/sysdep.h
+++ b/sysdeps/unix/sysv/linux/i386/sysdep.h
@@ -297,7 +297,7 @@
cfi_restore (edi); L(POPDI1):
#define PUSHARGS_6 _PUSHARGS_6
-#define DOARGS_6 _DOARGS_6 (36)
+#define DOARGS_6 _DOARGS_6 (40)
#define POPARGS_6 _POPARGS_6
#define _PUSHARGS_6 pushl %ebp; cfi_adjust_cfa_offset (4); \
cfi_rel_offset (ebp, 0); L(PUSHBP1): _PUSHARGS_5
diff --git a/sysdeps/unix/sysv/linux/sys/epoll.h b/sysdeps/unix/sysv/linux/sys/epoll.h
index 68f173a04d..d8901f7d53 100644
--- a/sysdeps/unix/sysv/linux/sys/epoll.h
+++ b/sysdeps/unix/sysv/linux/sys/epoll.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004, 2005, 2006 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,14 @@
#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
+
enum EPOLL_EVENTS
{
@@ -105,6 +113,16 @@ extern int epoll_ctl (int __epfd, int __op, int __fd,
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 */
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index fca29b26ff..5776673733 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -10,6 +10,7 @@ delete_module EXTRA delete_module 3 delete_module
epoll_create EXTRA epoll_create i:i epoll_create
epoll_ctl EXTRA epoll_ctl i:iiip epoll_ctl
epoll_wait EXTRA epoll_wait Ci:ipii epoll_wait
+epoll_pwait EXTRA epoll_pwait Ci:ipiipi epoll_pwait
fdatasync - fdatasync i:i fdatasync
flock - flock i:ii __flock flock
fork - fork i: __libc_fork __fork fork