From patchwork Wed Oct 21 12:33:28 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 55385 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wi0-f200.google.com (mail-wi0-f200.google.com [209.85.212.200]) by patches.linaro.org (Postfix) with ESMTPS id D462923024 for ; Wed, 21 Oct 2015 12:33:53 +0000 (UTC) Received: by wicfg8 with SMTP id fg8sf6539694wic.0 for ; Wed, 21 Oct 2015 05:33:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:mailing-list :precedence:list-id:list-unsubscribe:list-subscribe:list-archive :list-post:list-help:sender:delivered-to:from:to:subject:date :message-id:x-original-sender:x-original-authentication-results; bh=Ng06jjsY1/lxM3knAEGkmJ31bldXut1J+JqErB9mD20=; b=Z1ve8lFgOiuOeCqFZeplT6xmTm4RAr8u5/F0PEdVBfwMOIDnKRdqg/ss8DTKuUJ8wr 5a7TLviDhzodlT0/7/oN/UcTMvh7ukxikt+WOafy1Lk7Y1wCrTZ1CaphHCXCaeggXiUS PgIKBc0mV2AwjA2vcnEDggpkttrWk1u4j2QRwSoFAHxjikf0ZP/mnIqH9WeJHAwz9Xz4 nrYjQfKVlNO3N49CzLGNIePbrR7CEkv1nyMgyErilbpN7DTRpv5LN61iw4rOb7uxxx+q fk3zKEDxETQWGE6+ou1/qMp9W+xWul4j6vYwb+DmATqwlR6se0pD6hMERy3zPgmGErLp nCjA== X-Gm-Message-State: ALoCoQnN9PEAvtxmFw6Th6FX1DLgPzXpjLak/CM5b8H3eZ2+oNVqpjbZ+Z1c4XresrEFI1kIDJgP X-Received: by 10.112.140.202 with SMTP id ri10mr2089801lbb.10.1445430832888; Wed, 21 Oct 2015 05:33:52 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.25.141.74 with SMTP id p71ls178348lfd.77.gmail; Wed, 21 Oct 2015 05:33:52 -0700 (PDT) X-Received: by 10.112.142.9 with SMTP id rs9mr4993333lbb.39.1445430832606; Wed, 21 Oct 2015 05:33:52 -0700 (PDT) Received: from mail-lb0-x22e.google.com (mail-lb0-x22e.google.com. [2a00:1450:4010:c04::22e]) by mx.google.com with ESMTPS id ea18si6193250lbb.84.2015.10.21.05.33.52 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Oct 2015 05:33:52 -0700 (PDT) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 2a00:1450:4010:c04::22e as permitted sender) client-ip=2a00:1450:4010:c04::22e; Received: by lbbwb3 with SMTP id wb3so37239534lbb.1 for ; Wed, 21 Oct 2015 05:33:52 -0700 (PDT) X-Received: by 10.112.64.72 with SMTP id m8mr4943749lbs.41.1445430832451; Wed, 21 Oct 2015 05:33:52 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.59.35 with SMTP id w3csp2669954lbq; Wed, 21 Oct 2015 05:33:51 -0700 (PDT) X-Received: by 10.50.56.104 with SMTP id z8mr4905737igp.69.1445430831390; Wed, 21 Oct 2015 05:33:51 -0700 (PDT) Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id k4si22594767igx.66.2015.10.21.05.33.50 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Oct 2015 05:33:51 -0700 (PDT) Received-SPF: pass (google.com: domain of libc-alpha-return-64338-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Received: (qmail 24448 invoked by alias); 21 Oct 2015 12:33:41 -0000 Mailing-List: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org Precedence: list 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 24417 invoked by uid 89); 21 Oct 2015 12:33:40 -0000 X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-yk0-f176.google.com X-Received: by 10.129.13.213 with SMTP id 204mr6823264ywn.281.1445430816901; Wed, 21 Oct 2015 05:33:36 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH] Fix SYSCALL_CANCEL for empty argumetns Date: Wed, 21 Oct 2015 10:33:28 -0200 Message-Id: <1445430808-25718-1-git-send-email-adhemerval.zanella@linaro.com> X-Original-Sender: adhemerval.zanella@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 2a00:1450:4010:c04::22e as permitted sender) smtp.mailfrom=patch+caf_=patchwork-forward=linaro.org@linaro.org; dkim=pass header.i=@sourceware.org X-Google-Group-Id: 836684582541 This patch fixes the SYSCALL_CANCEL macro for usage with zero argument number (for instance SYSCALL_CANCEL (pause)) using a similar approach used for SOCKETCALL_CANCEL. GLIBC build still does not hit this issue still since SYSCALL_CANCEL is not currently being used for zero arguments calls. Tested on i386, x86_64, powerpc64le, aarch64. * sysdeps/unix/sysdep.h (SYSCALL_CANCEL): Fix macro for zero argument syscalls. (__SYSCALL0): New macro. (__SYSCALL1): Likewise. (__SYSCALL2): Likewise. (__SYSCALL3): Likewise. (__SYSCALL4): Likewise. (__SYSCALL5): Likewise. (__SYSCALL6): Likewise. (__SYSCALL_CONCAT_X): Likewise. (__SYSCALL_CONCAT): Likewise. (__SYSCALL_DIST): Likewise. (__SYSCALL_CALL): Likewise. --- ChangeLog | 16 ++++++++++++++++ sysdeps/unix/sysdep.h | 34 ++++++++++++++++++++++++++-------- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h index 52dad58..7e94e53 100644 --- a/sysdeps/unix/sysdep.h +++ b/sysdeps/unix/sysdep.h @@ -24,22 +24,40 @@ #define SYSCALL__(name, args) PSEUDO (__##name, name, args) #define SYSCALL(name, args) PSEUDO (name, name, args) -/* Cancellation macros. */ -#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,n,...) n +#define __SYSCALL0(name) \ + INLINE_SYSCALL (name, 0) +#define __SYSCALL1(name, a1) \ + INLINE_SYSCALL (name, 1, a1) +#define __SYSCALL2(name, a1, a2) \ + INLINE_SYSCALL (name, 2, a1, a2) +#define __SYSCALL3(name, a1, a2, a3) \ + INLINE_SYSCALL (name, 3, a1, a2, a3) +#define __SYSCALL4(name, a1, a2, a3, a4) \ + INLINE_SYSCALL (name, 4, a1, a2, a3, a4) +#define __SYSCALL5(name, a1, a2, a3, a4, a5) \ + INLINE_SYSCALL (name, 5, a1, a2, a3, a4, a5) +#define __SYSCALL6(name, a1, a2, a3, a4, a5, a6) \ + INLINE_SYSCALL (name, 6, a1, a2, a3, a4, a5, a6) + +#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n #define __SYSCALL_NARGS(...) \ - __SYSCALL_NARGS_X (__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1, 0,) + __SYSCALL_NARGS_X (__VA_ARGS__,7,6,5,4,3,2,1,0,) +#define __SYSCALL_CONCAT_X(a,b) a##b +#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X (a, b) +#define __SYSCALL_DISP(b,...) \ + __SYSCALL_CONCAT (b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) + +#define __SYSCALL_CALL(...) __SYSCALL_DISP (__SYSCALL, __VA_ARGS__) -#define SYSCALL_CANCEL(name, ...) \ +#define SYSCALL_CANCEL(...) \ ({ \ long int sc_ret; \ if (SINGLE_THREAD_P) \ - sc_ret = INLINE_SYSCALL (name, __SYSCALL_NARGS(__VA_ARGS__), \ - __VA_ARGS__); \ + sc_ret = __SYSCALL_CALL (__VA_ARGS__); \ else \ { \ int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ - sc_ret = INLINE_SYSCALL (name, __SYSCALL_NARGS (__VA_ARGS__), \ - __VA_ARGS__); \ + sc_ret = __SYSCALL_CALL (__VA_ARGS__); \ LIBC_CANCEL_RESET (sc_cancel_oldtype); \ } \ sc_ret; \