From patchwork Mon Dec 12 12:32:54 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 87665 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp1612611qgi; Mon, 12 Dec 2016 04:33:55 -0800 (PST) X-Received: by 10.99.146.13 with SMTP id o13mr105643520pgd.3.1481546035640; Mon, 12 Dec 2016 04:33:55 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id x21si43126905pgh.142.2016.12.12.04.33.55 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Dec 2016 04:33:55 -0800 (PST) Received-SPF: pass (google.com: domain of libc-alpha-return-75738-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-75738-patch=linaro.org@sourceware.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=libc-alpha-return-75738-patch=linaro.org@sourceware.org; dmarc=fail (p=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=YmWdJPwbNV0aqeuSB9aBx09sn1qYZVp dBA2BvTHvZcMxptxKEhpFaPkeTLe7YUB+eL04zy7W824Milv1ncZDuf0PyQ1mvQb Vds/l6UuTNkHv7FzqdxKfq1MVnhq/wfWXg+YW6qWgI17kQzEzK+4seEtczx5Ajbp pMNJj7TKPE7w= 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=ftv3cZNxgYr5dNQotuFyr9COnFA=; b=XNIFl EYDE1PXyvCnojVvimIEGGKB2ssoVWVf1RW7c8K52NpC6/XKICW//L2KD9EfRM2vG kjnh5FXNlzmw8nkeOHVRltmuZ3kHQulUSt+MMxFjNyFTxHMQdaRYfEf1dA4p21ew LED3g4geqoKRSg2NJ8ujnW7pSrv8W5hmJF6nXo= Received: (qmail 7203 invoked by alias); 12 Dec 2016 12:33:30 -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 7154 invoked by uid 89); 12 Dec 2016 12:33:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy=ipc, IPC, wired, 2.7.4 X-HELO: mail-ua0-f176.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=4Dx/Z4J0GnCLtpDY8+DzltamdqcxFuslUpe3UCFUUZ4=; b=S7yv8QXeGKL2SRLCREcOY5e74sZS7DObeJesNOFaF+A2Z+qefFtFx+BUUU1fsykUrk UUjawV5ejU5CCQIp8h5nVmqKFkHmgzgUvMw3ejSL3/5nkr/fYM7bheyG2I9yfOW4NiuE 2ZjGQ587wXzmPx8oWV/NMqZez2xYb/TP+mGa6uiZZ7Sdte5pGyz5n/wWfDe7Cts5L2d1 IGkFpocCmkkTlndCLaie3txyBSKZCfqfQ67Y7uDRMXKjvXYJadgYh5vtrbUFs0DqYGl/ eoZLQpvMU6WcR0rY/vpVhF5ee0xSKfZSJcmhfn3DLW089hUxYmHKmUvlROOY88P+rm2N tSew== X-Gm-Message-State: AKaTC02kjxXu8hQfkds0/+Z7iWShPGcOq4xmrjh7nZt+dffIqjLzIggFx4m/FdDuytcuXm4E X-Received: by 10.176.3.72 with SMTP id 66mr70964904uat.45.1481545997869; Mon, 12 Dec 2016 04:33:17 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH 01/17] Add __ASSUME_DIRECT_SYSVIPC_SYSCALL for Linux Date: Mon, 12 Dec 2016 10:32:54 -0200 Message-Id: <1481545990-7247-2-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1481545990-7247-1-git-send-email-adhemerval.zanella@linaro.org> References: <1481545990-7247-1-git-send-email-adhemerval.zanella@linaro.org> On current minimum supported kernels, the SysV IPC on Linux is provided by either the ipc syscalls or correspondent wire syscalls. Also, for architectures that supports wire syscalls all syscalls are supported in a set (msgct, msgrcv, msgsnd, msgget, semctl, semget, semop, semtimedop, shmctl, shmat, shmget, shmdt). The architectures that only supports ipc syscall are: - i386, m68k, microblaze, mips32, powerpc (powerpc32, powerpc64, and powerpc64le), s390 (32 and 64 bits), sh, sparc32, and sparc64. And the architectures that only supports wired syscalls are: - aarch64, alpha, hppa, ia64, mips64, mips64n32, nios2, tile (tilepro, tilegx, and tilegx64), and x86_64 Also arm is the only one that supports both wire syscalls and the ipc, although the ipc one is deprecated. This patch adds a new define, __ASSUME_DIRECT_SYSVIPC_SYSCALL, that wired syscalls are supported on the system and the general idea is to use it where possible. I also checked the syscall table for all architectures on Linux 4.9 and there is no change on described support for Linux 2.6.32/3.2. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): New define. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Undef. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sparc/kernel-features.h (__ASSUME_DIRECT_SYSVIPC_SYSCALL): Likewise. --- ChangeLog | 19 +++++++++++++++++++ sysdeps/unix/sysv/linux/i386/kernel-features.h | 3 +++ sysdeps/unix/sysv/linux/kernel-features.h | 4 ++++ sysdeps/unix/sysv/linux/m68k/kernel-features.h | 3 +++ sysdeps/unix/sysv/linux/mips/kernel-features.h | 2 ++ sysdeps/unix/sysv/linux/powerpc/kernel-features.h | 3 +++ sysdeps/unix/sysv/linux/s390/kernel-features.h | 3 +++ sysdeps/unix/sysv/linux/sh/kernel-features.h | 3 +++ sysdeps/unix/sysv/linux/sparc/kernel-features.h | 3 +++ 9 files changed, 43 insertions(+) -- 2.7.4 diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index 148963c..0a557f8 100644 --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h @@ -52,3 +52,6 @@ # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL #endif + +/* i686 only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 1d3b554..19125ce 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -147,3 +147,7 @@ separate syscalls were only added later. */ #define __ASSUME_SENDMSG_SYSCALL 1 #define __ASSUME_RECVMSG_SYSCALL 1 + +/* Support for SysV IPC through wired syscalls. All supported architectures + either support ipc syscall and/or all the ipc correspondent syscalls. */ +#define __ASSUME_DIRECT_SYSVIPC_SYSCALLS 1 diff --git a/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h index 46ec601..b03de4c 100644 --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -54,3 +54,6 @@ # undef __ASSUME_REQUEUE_PI # undef __ASSUME_SET_ROBUST_LIST #endif + +/* m68k only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS diff --git a/sysdeps/unix/sysv/linux/mips/kernel-features.h b/sysdeps/unix/sysv/linux/mips/kernel-features.h index b486d90..fae34aa 100644 --- a/sysdeps/unix/sysv/linux/mips/kernel-features.h +++ b/sysdeps/unix/sysv/linux/mips/kernel-features.h @@ -32,6 +32,8 @@ pairs to start with an even-number register. */ #if _MIPS_SIM == _ABIO32 # define __ASSUME_ALIGNED_REGISTER_PAIRS 1 +/* mips32 only supports ipc syscall. */ +# undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS #endif /* Define that mips64-n32 is a ILP32 ABI to set the correct interface to diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h index 42a53f2..5a84b6b 100644 --- a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h @@ -52,3 +52,6 @@ #endif #include_next + +/* powerpc only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS diff --git a/sysdeps/unix/sysv/linux/s390/kernel-features.h b/sysdeps/unix/sysv/linux/s390/kernel-features.h index b3edee4..10eade3 100644 --- a/sysdeps/unix/sysv/linux/s390/kernel-features.h +++ b/sysdeps/unix/sysv/linux/s390/kernel-features.h @@ -48,3 +48,6 @@ # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL #endif + +/* s390 only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index d03aafa..9eb8ff4 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -54,4 +54,7 @@ before the offset. */ #define __ASSUME_PRW_DUMMY_ARG 1 +/* sh only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS + #endif diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index 69c9c7c..e487efe 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h @@ -37,3 +37,6 @@ # undef __ASSUME_REQUEUE_PI # undef __ASSUME_SET_ROBUST_LIST #endif + +/* sparc only supports ipc syscall. */ +#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS