From patchwork Thu Apr 20 17:56:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 97861 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp914602qgf; Thu, 20 Apr 2017 10:56:35 -0700 (PDT) X-Received: by 10.84.222.12 with SMTP id w12mr11530955pls.115.1492710995001; Thu, 20 Apr 2017 10:56:35 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id u26si7110913pgo.310.2017.04.20.10.56.34 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Apr 2017 10:56:34 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-78810-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-78810-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-78810-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; q=dns; s= default; b=nls5FdIxpI1bwL8Nw71hvgSUUl6DL/SFLcrf1Hl+Wbhx+pUktXPFE rmK8uHGQTxMwxh/hWSwUjEJT4UqvD8PLd1pFPW7XsN4pjBfl58/QDiMLCrLIiOjx IcfFNiMNQ7KbOYc1iuVMKhdOkdhXNSo1WIFYa/bp8d+vTivXyhlDLM= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id; s=default; bh=I+CTEWDI0VPVUsrRLoaKXiYBZxY=; b=IwZjkSkNR9QVqvqgBJLYP2pZKEYR NonynfR/XfkxErsr/S0Nya59xb0STcjsHkNUABC2lBkFnYZt9lJCgQ8T6VgTbqzs kq8+5zfyoZj5bPQkGZ3bNLqeK8r4678ve8IYy0Vx2HCRnkDqkauXZtUw+K2nBlo1 FNNqm6Z8ac011OA= Received: (qmail 105339 invoked by alias); 20 Apr 2017 17:56:20 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 105275 invoked by uid 89); 20 Apr 2017 17:56:16 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_LOW, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=pii X-HELO: mail-qt0-f181.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=Em5kzddxZ+RxPgfR6TQlgEbhUjLEzAThUGnoR76uikI=; b=EeINEvUYNm3ybVWpKmnYdbcIINtxoQ5rXQB0zahGSVU96lUzlPXs/RbSOr4VAI3QL7 ++klH3XrgS/w/pV64ztOvOa5QSBYC8Pj8Z/nIFXh1TVOuRJ915ALbjZIwGNcPDfthb/A NanNFDjQEeB6p5C+/x0vvHE6xcVd15mxXPf59SZjAQeZAIAH0tsh+3EhzJqTulJeCvK+ CD7F2GfBDyB4mJ8BjZFXEII7UIglSh73PZ79srXfSBNJH8FJIy3Hv+AT66aIhe+YZRqp OsM9Dqn/+82WfSGyXjHSKZBBJBHU1AqUhYARYPaMuEO5IXVK4hZsiOFjXC4syyI7SWF5 9wtA== X-Gm-Message-State: AN3rC/6cuMNK/nxBNJnGi9WHqkFNOJoIua5Y1LNazUUsUpSgHF2LU0Bo mHLZ5TLfqrkb/wBC4XczmA== X-Received: by 10.237.36.211 with SMTP id u19mr8872620qtc.187.1492710975304; Thu, 20 Apr 2017 10:56:15 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 1/3] Consolidate Linux poll implementation Date: Thu, 20 Apr 2017 14:56:06 -0300 Message-Id: <1492710968-7699-1-git-send-email-adhemerval.zanella@linaro.org> This patch consolidates the poll Linux syscall implementation on sysdeps/unix/sysv/linux/poll.c. It basically removes poll from auto-generation list and add a default implementation that either call __NR_poll directly (if the kernel headers defines it) or ppoll adjusting the timeout argument (as the generic implementation). Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/generic/poll.c: Remove file. * sysdeps/unix/sysv/linux/poll.c: New file. * sysdeps/unix/sysv/linux/syscalls.list: Remove poll from auto-generation list. --- ChangeLog | 7 +++++++ sysdeps/unix/sysv/linux/{generic => }/poll.c | 8 ++++++-- sysdeps/unix/sysv/linux/syscalls.list | 1 - 3 files changed, 13 insertions(+), 3 deletions(-) rename sysdeps/unix/sysv/linux/{generic => }/poll.c (88%) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/generic/poll.c b/sysdeps/unix/sysv/linux/poll.c similarity index 88% rename from sysdeps/unix/sysv/linux/generic/poll.c rename to sysdeps/unix/sysv/linux/poll.c index c06d383..5a781dd 100644 --- a/sysdeps/unix/sysv/linux/generic/poll.c +++ b/sysdeps/unix/sysv/linux/poll.c @@ -1,6 +1,6 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. +/* Linux poll implementation. + Copyright (C) 2017 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -25,6 +25,9 @@ int __poll (struct pollfd *fds, nfds_t nfds, int timeout) { +#ifdef __NR_poll + return SYSCALL_CANCEL (poll, fds, nfds, timeout); +#else struct timespec timeout_ts; struct timespec *timeout_ts_p = NULL; @@ -36,6 +39,7 @@ __poll (struct pollfd *fds, nfds_t nfds, int timeout) } return SYSCALL_CANCEL (ppoll, fds, nfds, timeout_ts_p, NULL, 0); +#endif } libc_hidden_def (__poll) weak_alias (__poll, poll) diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 5d3c417..fcefefc 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -50,7 +50,6 @@ pause - pause Ci: __libc_pause pause pipe - pipe i:f __pipe pipe pipe2 - pipe2 i:fi __pipe2 pipe2 pivot_root EXTRA pivot_root i:ss pivot_root -poll - poll Ci:pii __libc_poll __poll poll prctl EXTRA prctl i:iiiii __prctl prctl putpmsg - putpmsg i:ippii putpmsg query_module EXTRA query_module i:sipip __compat_query_module query_module@GLIBC_2.0:GLIBC_2.23 From patchwork Thu Apr 20 17:56:07 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 97862 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp914673qgf; Thu, 20 Apr 2017 10:56:48 -0700 (PDT) X-Received: by 10.98.218.68 with SMTP id w4mr8861676pfl.246.1492711008807; Thu, 20 Apr 2017 10:56:48 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id u91si7127044plb.202.2017.04.20.10.56.48 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Apr 2017 10:56:48 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-78811-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-78811-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-78811-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=xBLqXPjfD3NwPLYmHQKi3P8H+as/C4O kHOsdL4+LTTOfwhfm7uinVub5q2RdRx8azBDrDwlh8XSJmIzqRk+k0+R1qrZn2kB DhgVPuu5RSSeGDNEHCcYmnMdpdIybyEg1dDNuZ9YNN5TCkiMa7wXDFoPkErwMtho E+aLlgVJYi8I= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; s=default; bh=tGgkXXNR1jMgGBpfps1vgn6JuMM=; b=HELCH tarPj4gtetlwzkDhhqXDYhCIE2UKqbZxjtNL7NpJPHurcaZTbuihiRkv3ngDDy95 wXdGjtJCkO3hGm/U4Oyg1lOxRPiz8PHmpzd4jtNoolpZwxjduNeSuYbPOEXqUw95 vL+l8Ci65hFS4ONyuYWfnUgNl/ltgYuHkqZU8U= Received: (qmail 105368 invoked by alias); 20 Apr 2017 17:56:20 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 105327 invoked by uid 89); 20 Apr 2017 17:56:19 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.5 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=iip X-HELO: mail-qt0-f169.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=X+Jd9a5Zs8FLH2Hjcigh/9LTIOOaunBM+0qVBMG1eFA=; b=tgwDJ7F0ebw6BaDcjEAybJsNSjEJYyPtCJQzEt9WGTLwOvcRjBszXLsYVmCh50v0PO sIHZ7iCBnoMTXy9Bh0MBYSI8A3q3f3HdrsUdrl5Yr2KVgPht1RK3rUIM5XSii92241OX AigRBPCt77S08UZi6TPF5N2NOrZocBKILrW4zmeKhnA/4ZSutxFI5sf8deHqMlHsuyuJ Eegg0Me5Gk5nQiSkLrctaQSkyA+IGcZjYd/CHTcry2EXoZ6oosfrGcCzQIUtM5m4gg1y 7FQ5aHOFdPzXB/IAGvncIAZEQNaOHAJ0/AgtTu6tjJMXdk8V/5QfAaYsBZwTheRl4y38 zXsQ== X-Gm-Message-State: AN3rC/5AomGUbTTtgdmWRA1qZr2xA369if6/3jViwAu6ff6wfGr1lKql NZhi7GMpd9JGREGa3JKKdw== X-Received: by 10.200.54.121 with SMTP id n54mr8846058qtb.275.1492710976774; Thu, 20 Apr 2017 10:56:16 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 2/3] Consolidate Linux select implementation Date: Thu, 20 Apr 2017 14:56:07 -0300 Message-Id: <1492710968-7699-2-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1492710968-7699-1-git-send-email-adhemerval.zanella@linaro.org> References: <1492710968-7699-1-git-send-email-adhemerval.zanella@linaro.org> This patch consolidates the select Linux syscall implementation on sysdeps/unix/sysv/linux/select.c. The changes are: 1. Remove select from auto-generation syscalls.list on the architecture that uses __NR_select. 2. Remove generic implementation add a default one that handle all current cases (with the expection of alpha). The new default implementation will either use __NR_select if available of fallback to __NR_pselect6 otherwise. 3. Add a alpha outlier implementation which requires old compatibility symbols. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/alpha/Makefile (sysdep_routines): Add osf_select. * sysdeps/unix/sysv/linux/alpha/select.c: New file. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove select and osf_select from auto-generation list. * sysdeps/unix/sysv/linux/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. * sysdeps/unix/sysv/linux/generic/select.c: Remove file. * sysdeps/unix/sysv/linux/select.c: New file. --- ChangeLog | 10 ++++ sysdeps/unix/sysv/linux/alpha/Makefile | 2 +- sysdeps/unix/sysv/linux/alpha/select.c | 53 ++++++++++++++++++++++ sysdeps/unix/sysv/linux/alpha/syscalls.list | 2 - sysdeps/unix/sysv/linux/{generic => }/select.c | 19 ++++++-- .../unix/sysv/linux/sparc/sparc64/syscalls.list | 2 - sysdeps/unix/sysv/linux/syscalls.list | 1 - 7 files changed, 78 insertions(+), 11 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/alpha/select.c rename sysdeps/unix/sysv/linux/{generic => }/select.c (82%) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile index 37bdd5a..47bd189 100644 --- a/sysdeps/unix/sysv/linux/alpha/Makefile +++ b/sysdeps/unix/sysv/linux/alpha/Makefile @@ -13,7 +13,7 @@ sysdep_routines += ieee_get_fp_control ieee_set_fp_control \ ioperm # Support old timeval32 entry points -sysdep_routines += osf_select osf_gettimeofday osf_settimeofday \ +sysdep_routines += osf_gettimeofday osf_settimeofday \ osf_getitimer osf_setitimer osf_utimes \ osf_getrusage osf_wait4 diff --git a/sysdeps/unix/sysv/linux/alpha/select.c b/sysdeps/unix/sysv/linux/alpha/select.c new file mode 100644 index 0000000..bb0298f --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/select.c @@ -0,0 +1,53 @@ +/* Linux/alpha select implementation. + Copyright (C) 2017 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, see + . */ + +#include +#include +#include +#include +#include +#include + +int +__new_select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) +{ + return SYSCALL_CANCEL (select, nfds, readfds, writefds, exceptfds, timeout); +} +strong_alias (__new_select, __select) +libc_hidden_def (__select) + +default_symbol_version (__new_select, select, GLIBC_2.1); + +strong_alias (__new_select, __new_select_private); +symbol_version (__new_select_private, __select, GLIBC_2.1); + +/* Old timeval32 compat calls. */ +#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1) +int +__select_tv32 (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) +{ + return SYSCALL_CANCEL (osf_select, nfds, readfds, writefds, exceptfds, + timeout); +} +strong_alias (__select_tv32, __select_tv32_1) + +compat_symbol (libc, __select_tv32, __select, GLIBC_2_0); +compat_symbol (libc, __select_tv32_1, select, GLIBC_2_0); +#endif diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index aa21b10..12cd021 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -23,7 +23,6 @@ pciconfig_write EXTRA pciconfig_write 5 pciconfig_write pciconfig_iobase EXTRA pciconfig_iobase 3 __pciconfig_iobase pciconfig_iobase # support old timeval32 entry points -osf_select - osf_select C:5 __select_tv32 __select@GLIBC_2.0 select@GLIBC_2.0 osf_gettimeofday - osf_gettimeofday 2 __gettimeofday_tv32 __gettimeofday@GLIBC_2.0 gettimeofday@GLIBC_2.0 osf_settimeofday - osf_settimeofday 2 __settimeofday_tv32 settimeofday@GLIBC_2.0 osf_getitimer - osf_getitimer 2 __getitimer_tv32 getitimer@GLIBC_2.0 @@ -33,7 +32,6 @@ osf_getrusage - osf_getrusage 2 __getrusage_tv32 getrusage@GLIBC_2.0 osf_wait4 - osf_wait4 4 __wait4_tv32 wait4@GLIBC_2.0 # support new timeval64 entry points -select - select C:5 __GI___select select@@GLIBC_2.1 __select@@GLIBC_2.1 gettimeofday - gettimeofday 2 __GI___gettimeofday gettimeofday@@GLIBC_2.1 __gettimeofday@@GLIBC_2.1 settimeofday - settimeofday 2 __settimeofday settimeofday@@GLIBC_2.1 getitimer - getitimer 2 __getitimer getitimer@@GLIBC_2.1 diff --git a/sysdeps/unix/sysv/linux/generic/select.c b/sysdeps/unix/sysv/linux/select.c similarity index 82% rename from sysdeps/unix/sysv/linux/generic/select.c rename to sysdeps/unix/sysv/linux/select.c index 7743ea3..6e03450 100644 --- a/sysdeps/unix/sysv/linux/generic/select.c +++ b/sysdeps/unix/sysv/linux/select.c @@ -1,6 +1,6 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. +/* Linux select implementation. + Copyright (C) 2017 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -28,11 +28,19 @@ after waiting the interval specified therein. Returns the number of ready descriptors, or -1 for errors. */ +#ifdef __NR__newselect +# undef __NR_select +# define __RN_select __NR__newselect +#endif + int -__select(int nfds, fd_set *readfds, - fd_set *writefds, fd_set *exceptfds, - struct timeval *timeout) +__select (int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) { +#ifdef __NR_select + return SYSCALL_CANCEL (select, nfds, readfds, writefds, exceptfds, + timeout); +#else int result; struct timespec ts, *tsp = NULL; @@ -55,6 +63,7 @@ __select(int nfds, fd_set *readfds, } return result; +#endif } libc_hidden_def (__select) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list index 1e85118..33082f3 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list @@ -1,7 +1,5 @@ # File name Caller Syscall name # args Strong name Weak names -# Override select.S in parent directory: -select - select C:5 __select select bind - bind 3 __bind bind getpeername - getpeername 3 __getpeername getpeername getsockname - getsockname 3 __getsockname getsockname diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index fcefefc..4d550b8 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -63,7 +63,6 @@ sched_rr_gi - sched_rr_get_interval i:ip __sched_rr_get_interval sched_rr_get_in sched_setp - sched_setparam i:ip __sched_setparam sched_setparam sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler sched_yield - sched_yield i: __sched_yield sched_yield -select - _newselect Ci:iPPPP __select __libc_select select sendfile - sendfile i:iipi sendfile sendfile64 - sendfile64 i:iipi sendfile64 setfsgid EXTRA setfsgid i:i setfsgid From patchwork Thu Apr 20 17:56:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 97863 Delivered-To: patch@linaro.org Received: by 10.140.109.52 with SMTP id k49csp914750qgf; Thu, 20 Apr 2017 10:57:01 -0700 (PDT) X-Received: by 10.84.232.133 with SMTP id i5mr3590204plk.172.1492711021861; Thu, 20 Apr 2017 10:57:01 -0700 (PDT) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id k70si7140638pfa.245.2017.04.20.10.57.01 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 20 Apr 2017 10:57:01 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-78812-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org; spf=pass (google.com: domain of libc-alpha-return-78812-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-78812-patch=linaro.org@sourceware.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; q=dns; s=default; b=UahldU7Oaw7HJNx0bmLffOJPkSqMUVX eDw20uRp2wJQLhJ+QSUbb195m8TXNf1rwrnfaIxhiS9MQqZIqNy/85ui+utqfLM8 +Y4p7MxFVFmdhF5BA4jhvqOYKrL/AjzPv6ALy8is2ofuh5IlNuvprZsewHsnbBxN Xg341M9eksO0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:from:to:subject:date:message-id:in-reply-to :references; s=default; bh=Mcm2adD5OhkK6zTeIEQusBFk0rg=; b=WXAkd 3ehWKu9RgALi8+apLfHNdQyp6Is1ucU8NuWipmyCqoVlVEzFiA8UU3QSBbzbngzb O/WkEmQTVwfzXVlBLcYk9IfpGaZAdQ7kO1+5nKO77RHTiNA0Rinoj7qTLDKuqtmU KgeivawSZecdTCGYCG0FMNORcnZj3z7eI+d4Ls= Received: (qmail 105445 invoked by alias); 20 Apr 2017 17:56:21 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 105341 invoked by uid 89); 20 Apr 2017 17:56:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.6 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy=H*RU:209.85.220.176, Hx-spam-relays-external:209.85.220.176, UD:mk X-HELO: mail-qk0-f176.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=G+0722MhpprBod+0twEkAKoW6J7vwZKMvjSb0Nng6dc=; b=iDCeWUJ7PsGw1KWxfbjFWOvT3llYh3w4KTLow9RXzHjNO800f4wGFCqK1xg/kmQfZ9 ug5VS/f+NqCNXcg0Ce+uhZQndaIUW8g9hK6fftIcbJ9NwodI3BHM2qbuafU0N05Ysr30 U+mxUOn7BjiyUQ3iToFOQZtpGsst/8IfgTOxhPEz9x8mB4MqbzdEr2JvEDGa2ygoE0JE O1v8v4CAGuFQXP5Z3WUWVO1nGLhveV/KNJfSJqI6rLU9goSyr5tuhqO86NIAkXCFVLNa 7REKRbRlpRixdfLEe+nfDaQuVKDaj2CmjUrAG3UXRLP1Vlc4fWSEaH2NxJAbYgfftiIu OXXg== X-Gm-Message-State: AN3rC/5g2cg9xQm5Ni/T9m/riseu71CIJV9yRvxQ0lTfcrSx8CWBr946 5zUiDZnXhT37Q7KNKVs1Og== X-Received: by 10.55.4.149 with SMTP id 143mr9558805qke.288.1492710978061; Thu, 20 Apr 2017 10:56:18 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 3/3] Consolidate Linux epoll_wait syscall Date: Thu, 20 Apr 2017 14:56:08 -0300 Message-Id: <1492710968-7699-3-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1492710968-7699-1-git-send-email-adhemerval.zanella@linaro.org> References: <1492710968-7699-1-git-send-email-adhemerval.zanella@linaro.org> This patch consolidates the epoll_wait Linux syscall generation on sysdeps/unix/sysv/linux/epoll_wait.c. The implementation tries to use __NR_epoll_wait if defined, otherwise calls epoll_pwait. Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32, arch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu. * sysdeps/unix/sysv/linux/epoll_wait.c: New file. * sysdeps/unix/sysv/linux/generic/epoll_wait.c: Remove file. * sysdeps/unix/sysv/linux/syscalls.list: Remove epoll_wait from auto-generation list. --- ChangeLog | 9 +++++++++ sysdeps/unix/sysv/linux/Makefile | 2 +- sysdeps/unix/sysv/linux/{generic => }/epoll_wait.c | 8 ++++++-- sysdeps/unix/sysv/linux/generic/Makefile | 2 +- sysdeps/unix/sysv/linux/syscalls.list | 1 - 5 files changed, 17 insertions(+), 5 deletions(-) rename sysdeps/unix/sysv/linux/{generic => }/epoll_wait.c (82%) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 1872cdb..a8790b1 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -17,7 +17,7 @@ include $(firstword $(wildcard $(sysdirs:=/sysctl.mk))) sysdep_routines += clone umount umount2 readahead \ setfsuid setfsgid epoll_pwait signalfd \ eventfd eventfd_read eventfd_write prlimit \ - personality + personality epoll_wait CFLAGS-gethostid.c = -fexceptions CFLAGS-tst-writev.c += "-DARTIFICIAL_LIMIT=(0x80000000-sysconf(_SC_PAGESIZE))" diff --git a/sysdeps/unix/sysv/linux/generic/epoll_wait.c b/sysdeps/unix/sysv/linux/epoll_wait.c similarity index 82% rename from sysdeps/unix/sysv/linux/generic/epoll_wait.c rename to sysdeps/unix/sysv/linux/epoll_wait.c index d9363f1..eb6e6d3 100644 --- a/sysdeps/unix/sysv/linux/generic/epoll_wait.c +++ b/sysdeps/unix/sysv/linux/epoll_wait.c @@ -1,6 +1,6 @@ -/* Copyright (C) 2011-2017 Free Software Foundation, Inc. +/* Linux epoll_wait syscall implementation. + Copyright (C) 2017 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Chris Metcalf , 2011. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -24,5 +24,9 @@ int epoll_wait (int epfd, struct epoll_event *events, int maxevents, int timeout) { +#ifdef __NR_epoll_wait + return SYSCALL_CANCEL (epoll_wait, epfd, events, maxevents, timeout); +#else return epoll_pwait (epfd, events, maxevents, timeout, NULL); +#endif } diff --git a/sysdeps/unix/sysv/linux/generic/Makefile b/sysdeps/unix/sysv/linux/generic/Makefile index c1daee2..7e27e79 100644 --- a/sysdeps/unix/sysv/linux/generic/Makefile +++ b/sysdeps/unix/sysv/linux/generic/Makefile @@ -1,3 +1,3 @@ ifeq ($(subdir),misc) -sysdep_routines += epoll_create epoll_wait inotify_init +sysdep_routines += epoll_create inotify_init endif diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list index 4d550b8..1a10903 100644 --- a/sysdeps/unix/sysv/linux/syscalls.list +++ b/sysdeps/unix/sysv/linux/syscalls.list @@ -12,7 +12,6 @@ delete_module EXTRA delete_module 3 delete_module epoll_create EXTRA epoll_create i:i epoll_create epoll_create1 EXTRA epoll_create1 i:i epoll_create1 epoll_ctl EXTRA epoll_ctl i:iiip epoll_ctl -epoll_wait EXTRA epoll_wait Ci:ipii epoll_wait eventfd EXTRA eventfd2 i:ii eventfd execve - execve i:spp __execve execve fdatasync - fdatasync Ci:i fdatasync