All of lore.kernel.org
 help / color / mirror / Atom feed
From: Waldemar Brodkorb <wbx@openadk.org>
To: buildroot@busybox.net
Subject: [Buildroot] [PATCH] uclibc: convert accept4 to use cancel.h macros
Date: Thu, 2 Nov 2017 08:00:47 +0100	[thread overview]
Message-ID: <20171102070046.GA6819@waldemar-brodkorb.de> (raw)

Fixes:
 http://autobuild.buildroot.net/results/78e033fe9f43845581a5d87b21a8451f67520e44

Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
---
 ...03-convert-accept4-to-use-cancel.h-macros.patch | 102 +++++++++++++++++++++
 1 file changed, 102 insertions(+)
 create mode 100644 package/uclibc/0003-convert-accept4-to-use-cancel.h-macros.patch

diff --git a/package/uclibc/0003-convert-accept4-to-use-cancel.h-macros.patch b/package/uclibc/0003-convert-accept4-to-use-cancel.h-macros.patch
new file mode 100644
index 0000000000..178dcde581
--- /dev/null
+++ b/package/uclibc/0003-convert-accept4-to-use-cancel.h-macros.patch
@@ -0,0 +1,102 @@
+From c7e82668bd23fbdd02ebe1e83ff2bb6877812423 Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <wbx@uclibc-ng.org>
+Date: Thu, 2 Nov 2017 02:40:43 +0100
+Subject: [PATCH] convert accept4() to use cancel.h macros
+
+Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
+---
+ include/sys/socket.h                  |  1 +
+ libc/inet/socketcalls.c               | 37 +++++++++--------------------------
+ libpthread/linuxthreads/wrapsyscall.c |  7 +++++++
+ 3 files changed, 17 insertions(+), 28 deletions(-)
+
+diff --git a/include/sys/socket.h b/include/sys/socket.h
+index 63dc4b953..83e1fcaa2 100644
+--- a/include/sys/socket.h
++++ b/include/sys/socket.h
+@@ -269,6 +269,7 @@ libc_hidden_proto(accept)
+    __THROW.  */
+ extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
+ 		    socklen_t *__restrict __addr_len, int __flags);
++libc_hidden_proto(accept4)
+ #endif
+ 
+ /* Shut down all or part of the connection open on socket FD.
+diff --git a/libc/inet/socketcalls.c b/libc/inet/socketcalls.c
+index e33d69344..1b92609d0 100644
+--- a/libc/inet/socketcalls.c
++++ b/libc/inet/socketcalls.c
+@@ -76,43 +76,24 @@ lt_libc_hidden(accept)
+ #endif
+ 
+ #ifdef L_accept4
+-#ifdef __NR_accept4
+-# define __NR___sys_accept4  __NR_accept4
+-static _syscall4(int, __sys_accept4, int, fd, struct sockaddr *, addr, socklen_t *, addrlen, int, flags)
+-int accept4(int fd, struct sockaddr *addr, socklen_t * addrlen, int flags)
+-{
+-	if (SINGLE_THREAD_P)
+-		return __sys_accept4(fd, addr, addrlen, flags);
+-#ifdef __UCLIBC_HAS_THREADS_NATIVE__
+-	else {
+-		int oldtype = LIBC_CANCEL_ASYNC ();
+-		int result = __sys_accept4(fd, addr, addrlen, flags);
+-		LIBC_CANCEL_RESET (oldtype);
+-		return result;
+-	}
+-#endif
+-}
+-#elif defined(__NR_socketcall)
+-int accept4(int fd, struct sockaddr *addr, socklen_t *addrlen, int flags)
++static int __NC(accept4)(int fd, struct sockaddr *addr, socklen_t *addrlen, int flags)
+ {
++# ifdef __NR_accept4
++	return INLINE_SYSCALL(accept4, 4, fd, addr, addrlen, flags);
++# elif defined(__NR_socketcall)
+ 	unsigned long args[4];
+ 
+ 	args[0] = fd;
+ 	args[1] = (unsigned long) addr;
+ 	args[2] = (unsigned long) addrlen;
+ 	args[3] = flags;
+-	if (SINGLE_THREAD_P)
+-		return __socketcall(SYS_ACCEPT4, args);
+-#ifdef __UCLIBC_HAS_THREADS_NATIVE__
+-	else {
+-		int oldtype = LIBC_CANCEL_ASYNC ();
+-		int result = __socketcall(SYS_ACCEPT4, args);
+-		LIBC_CANCEL_RESET (oldtype);
+-		return result;
+-	}
++
++	return __socketcall(SYS_ACCEPT4, args);
+ #endif
+ }
+-#endif
++CANCELLABLE_SYSCALL(int, accept4, (int fd, struct sockaddr *addr, socklen_t *addrlen, int flags),
++		    (fd, addr, addrlen, flags))
++lt_libc_hidden(accept4)
+ #endif
+ 
+ #ifdef L_bind
+diff --git a/libpthread/linuxthreads/wrapsyscall.c b/libpthread/linuxthreads/wrapsyscall.c
+index ca046a442..2386bfdef 100644
+--- a/libpthread/linuxthreads/wrapsyscall.c
++++ b/libpthread/linuxthreads/wrapsyscall.c
+@@ -192,6 +192,13 @@ CANCELABLE_SYSCALL (int, accept, (int fd, __SOCKADDR_ARG addr,
+ 				  socklen_t *addr_len),
+ 		    (fd, addr, addr_len))
+ 
++#if defined __UCLIBC_LINUX_SPECIFIC__
++/* accept4(2).  */
++CANCELABLE_SYSCALL (int, accept4, (int fd, __SOCKADDR_ARG addr,
++				  socklen_t *addr_len, int flags),
++		    (fd, addr, addr_len, flags))
++#endif
++
+ /* connect(2).  */
+ CANCELABLE_SYSCALL (int, connect, (int fd, __CONST_SOCKADDR_ARG addr,
+ 				     socklen_t len),
+-- 
+2.11.0
+
-- 
2.11.0

             reply	other threads:[~2017-11-02  7:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-02  7:00 Waldemar Brodkorb [this message]
2017-11-02  8:42 ` [Buildroot] [PATCH] uclibc: convert accept4 to use cancel.h macros Samuel Martin
2017-11-02 21:15 ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171102070046.GA6819@waldemar-brodkorb.de \
    --to=wbx@openadk.org \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.