summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2009-12-08 20:10:46 -0800
committerUlrich Drepper <drepper@redhat.com>2009-12-08 20:10:46 -0800
commitee1a7fabb4e0abd3e73e828ce326dcb5fd38b874 (patch)
treea4e958d835b3c1b3ddf4480fb4bb5f5ca9da8fdc
parent406300d20a052a015dda915af632bc1d64af8394 (diff)
Add recvmmsg interface.
-rw-r--r--ChangeLog7
-rw-r--r--NEWS7
-rw-r--r--sysdeps/unix/sysv/linux/Versions2
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h27
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list1
5 files changed, 41 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 1f4d2b2723..59e4b19241 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-12-08 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/bits/socket.h: Define mmsghdr and declare
+ recvmmsg.
+ * sysdeps/unix/sysv/linux/syscalls.list: Add entry for recvmmsg.
+ * sysdeps/unix/sysv/linux/Versions: Add recvmmsg for GLIBC_2.12.
+
2009-12-04 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* sysdeps/s390/s390-64/dl-trampoline.S: Add CFI for the call saved
diff --git a/NEWS b/NEWS
index db51d5fe94..e1fb6a5766 100644
--- a/NEWS
+++ b/NEWS
@@ -1,10 +1,15 @@
-GNU C Library NEWS -- history of user-visible changes. 2009-10-30
+GNU C Library NEWS -- history of user-visible changes. 2009-12-8
Copyright (C) 1992-2008, 2009 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.12
+
+* New Linux interface: recvmmsg
+
+
Version 2.11
* New interfaces: execvpe, pthread_sigqueue, mkstemps, mkstemps64, mkostemps,
diff --git a/sysdeps/unix/sysv/linux/Versions b/sysdeps/unix/sysv/linux/Versions
index 50c70513ff..f09ef6d983 100644
--- a/sysdeps/unix/sysv/linux/Versions
+++ b/sysdeps/unix/sysv/linux/Versions
@@ -146,6 +146,8 @@ libc {
_sys_errlist; sys_errlist; _sys_nerr; sys_nerr;
ntp_gettimex;
+
+ recvmmsg;
}
GLIBC_PRIVATE {
# functions used in other libraries
diff --git a/sysdeps/unix/sysv/linux/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index f23b338a35..aa78087a72 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -234,8 +234,8 @@ enum
#define MSG_MORE MSG_MORE
MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file
- descriptor received through
- SCM_RIGHTS. */
+ descriptor received through
+ SCM_RIGHTS. */
#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC
};
@@ -259,6 +259,15 @@ struct msghdr
int msg_flags; /* Flags on received message. */
};
+#ifdef __USE_GNU
+/* For `recvmmsg'. */
+struct mmsghdr
+ {
+ struct msghdr msg_hdr; /* Actual message header. */
+ unsigned int msg_len; /* Number of received bytes for the entry. */
+ };
+#endif
+
/* Structure used for storage of ancillary data object information. */
struct cmsghdr
{
@@ -403,4 +412,18 @@ struct linger
int l_linger; /* Time to linger. */
};
+
+__BEGIN_DECLS
+
+/* Receive a message as described by MESSAGE from socket FD.
+ Returns the number of bytes read or -1 for errors.
+
+ This function is a cancellation point and therefore not marked with
+ __THROW. */
+extern int recvmmsg (int __fd, struct mmsghdr *__vmessages,
+ unsigned int __vlen, int __flags,
+ __const struct timespec *__tmo);
+
+__END_DECLS
+
#endif /* bits/socket.h */
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index a87906a4e3..a1a449eb4b 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -53,6 +53,7 @@ prctl EXTRA prctl i:iiiii __prctl prctl
putpmsg - putpmsg i:ippii putpmsg
query_module EXTRA query_module i:sipip query_module
quotactl EXTRA quotactl i:isip quotactl
+recvmmsg EXTRA recvmmsg Ci:ipiip recvmmsg
remap_file_pages - remap_file_pages i:piiii __remap_file_pages remap_file_pages
sched_getp - sched_getparam i:ip __sched_getparam sched_getparam
sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler