From patchwork Wed Nov 2 19:26:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 17109 Received: (qmail 64184 invoked by alias); 2 Nov 2016 19:27:15 -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 64115 invoked by uid 89); 2 Nov 2016 19:27:13 -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=ILP32, 486, H*MI:sk:1478114 X-HELO: mail-vk0-f41.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=vN9+/LJZ+P5ZQKvOA8aZ4WzuWd5oBaXjA678WVoQjIc=; b=BH1EuaY0KQTEPnAghizscaKjER6FFOinTJJHe8Nwj5qNAEEnHQWXwbY1nXAzB3Cvo+ hx0LYR1OM2XIm8Ho2jn5/4KNyA0HFPi5w9j3fvIuQ86/AfVHyhJ0eN3IFe8j9/rm8JKw qcgKuZ0iVnR8NKXR11jLI/mxfucCUIY5X4qeC3B+up0SgL+ydAAKLc//wkDwaLCMSB/W vM6+EXrND/cDiijhPXiiHwDjY9wjbv0VrI8O44ERA/ZiDZVtfW3e9ovKLIx4rX9y/m5L XO4ZsCxJQC2fsrlHqhn8Mmwvtjbx6xH8rk5F69TYyNbPtTOQCwMSCMGkg36qLgG3Ywxj 840g== X-Gm-Message-State: ABUngvf+TAD+DX4M+RP7xPQO+3Vabd+hYVKMC/liEel+sH3Y09lU43gEwBHv/icP5JEm58Fk X-Received: by 10.31.170.7 with SMTP id t7mr3874368vke.6.1478114822408; Wed, 02 Nov 2016 12:27:02 -0700 (PDT) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH v2 01/16] Add __ASSUME_SYSVIPC_SYSCALL for Linux Date: Wed, 2 Nov 2016 17:26:38 -0200 Message-Id: <1478114813-3526-2-git-send-email-adhemerval.zanella@linaro.org> In-Reply-To: <1478114813-3526-1-git-send-email-adhemerval.zanella@linaro.org> References: <1478114813-3526-1-git-send-email-adhemerval.zanella@linaro.org> Changes from previous version: - Use __ASSUME_SYSVIPC_SYSCALL instead of __NR_syscall to issue the wired syscall or the ipc one. --- 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_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_SYSVIPC_SYSCALL): New define. * sysdeps/unix/sysv/linux/i386/kernel-features.h (__ASSUME_SYSVIPC_SYSCALL): Undef. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/kernel-features.h (__ASSUME_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_SYSVIPC_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sparc/kernel-features.h (__ASSUME_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(+) diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index 148963c..3da13d4 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_SYSVIPC_SYSCALL diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 1d3b554..cb0bc28 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_SYSVIPC_SYSCALL 1 diff --git a/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h index 46ec601..f0fd7ce 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_SYSVIPC_SYSCALL diff --git a/sysdeps/unix/sysv/linux/mips/kernel-features.h b/sysdeps/unix/sysv/linux/mips/kernel-features.h index b486d90..5e88c8e 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_SYSVIPC_SYSCALL #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..a81caf3 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_SYSVIPC_SYSCALL diff --git a/sysdeps/unix/sysv/linux/s390/kernel-features.h b/sysdeps/unix/sysv/linux/s390/kernel-features.h index b3edee4..8fd7853 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_SYSVIPC_SYSCALL diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index c5240fa..cb09603 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -49,3 +49,6 @@ the kernel interface for p{read,write}64 adds a dummy long argument before the offset. */ #define __ASSUME_PRW_DUMMY_ARG 1 + +/* sh only supports ipc syscall. */ +#undef __ASSUME_SYSVIPC_SYSCALL diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index 69c9c7c..20578bb 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_SYSVIPC_SYSCALL