From 6cc02c7aaedec87cfb2d105f9682b12b2154e54f Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Mon, 20 Jun 2011 19:35:31 +0000 Subject: [PATCH] sendmmsg for MIPS. --- ChangeLog.mips | 5 ++++ sysdeps/unix/sysv/linux/mips/bits/socket.h | 9 ++++++- .../sysv/linux/mips/mips32/internal_sendmmsg.S | 2 ++ sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c | 31 ++++++++++++++++++++++ 4 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/internal_sendmmsg.S create mode 100644 sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c diff --git a/ChangeLog.mips b/ChangeLog.mips index 2ead239e..9abc018f 100644 --- a/ChangeLog.mips +++ b/ChangeLog.mips @@ -1,5 +1,10 @@ 2011-06-20 Joseph Myers + * sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c, + sysdeps/unix/sysv/linux/mips/mips32/internal_sendmmsg.S: New. + +2011-06-20 Joseph Myers + * sysdeps/unix/sysv/linux/mips/bits/siginfo.h (SI_USER): Don't mention raise in the comment. diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket.h b/sysdeps/unix/sysv/linux/mips/bits/socket.h index 91af8b2f..698d5084 100644 --- a/sysdeps/unix/sysv/linux/mips/bits/socket.h +++ b/sysdeps/unix/sysv/linux/mips/bits/socket.h @@ -415,7 +415,7 @@ struct linger __BEGIN_DECLS -/* Receive a message as described by MESSAGE from socket FD. +/* Receive up to VLEN messages as described by VMESSAGES from socket FD. Returns the number of bytes read or -1 for errors. This function is a cancellation point and therefore not marked with @@ -424,6 +424,13 @@ extern int recvmmsg (int __fd, struct mmsghdr *__vmessages, unsigned int __vlen, int __flags, __const struct timespec *__tmo); +/* Send a VLEN messages as described by VMESSAGES to socket FD. + Return the number of datagrams successfully written or -1 for errors. +This function is a cancellation point and therefore not marked with + __THROW. */ +extern int sendmmsg (int __fd, struct mmsghdr *__vmessages, + unsigned int __vlen, int __flags); + __END_DECLS #endif /* bits/socket.h */ diff --git a/sysdeps/unix/sysv/linux/mips/mips32/internal_sendmmsg.S b/sysdeps/unix/sysv/linux/mips/mips32/internal_sendmmsg.S new file mode 100644 index 00000000..30434d73 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips32/internal_sendmmsg.S @@ -0,0 +1,2 @@ +/* MIPS does not have socket.S and the socketcall syscall should + generally be avoided, though it exists. */ diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c b/sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c new file mode 100644 index 00000000..c4f9a9f1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips32/sendmmsg.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2011 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. */ + +/* Avoid sendmmsg.c trying to use a definition based on the socketcall + syscall and internal_sendmmsg.S. */ + +#include +#include + +#include +#include +#include + +#undef __NR_socketcall + +#include -- 2.11.4.GIT