From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 124476 invoked by alias); 8 Nov 2016 20:30:39 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 124344 invoked by uid 89); 8 Nov 2016 20:30:32 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy=aimed, continuation, sparc64, testskeletonc X-HELO: mail-vk0-f44.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; bh=/Sp/WA93Wo2Vx0gfFBFh6de8ftBizPeVB8OL6YNYsuU=; b=TkBMUTutCUkDyKaobEmh+ODC2guGB1ADgotYD1Zbe+sZQbFrsOB6T5lH4QhuxZ51MT dwwgZazgJIluf/2LwFwi1vBzx/ItQKadYQq3cHHngwPfAtCXGR3SD8FFdXPBjpSyYI9C bSpKVoYBZmYNPOcWDRq63oBi+7kcrMcZjGFQk68Ww7ydswkMVCmHCTwqMOvD3oWUztX/ jZLV86PKo5cvRi8jafSEIjF9hSVZjFfEzSfjSAHa08wFwIqUKxwodtQGVdddWT5wXjse SwRqUEny+GUZS6BOpOjDF+AEd5HVFpCZi2L7UqUnln57YJtUHKko86VzFsJIcA1A7bMb U8hg== X-Gm-Message-State: ABUngvfvcsJrkJR49HcOckxoc05Qb3fZK9GOfyPLEnO1oxUl1vsYdheVW98Ei8WwBZonosRa X-Received: by 10.31.195.129 with SMTP id t123mr10137932vkf.166.1478637020121; Tue, 08 Nov 2016 12:30:20 -0800 (PST) From: Adhemerval Zanella To: libc-alpha@sourceware.org Subject: [PATCH v3 00/17] Consolidate Linux sysvipc implementation Date: Tue, 08 Nov 2016 20:30:00 -0000 Message-Id: <1478637007-31212-1-git-send-email-adhemerval.zanella@linaro.org> X-SW-Source: 2016-11/txt/msg00284.txt.bz2 Changes from previous version: - Refactor ipc_priv.h header to have working definition for all architectures. The header basically contains Linux specific ABI definitions for the architecture to correctly use default implementation, including old ipc_perm definition, calling convention, and __IPC_64 value. - Set all architectures to use the default implementation. It leaded to some code changes to accomodate all the architectures calling convention (with ipc_priv.h change) and some fixes on new default implementation. - Change mips64 implementation way to use the default one. - Some tests changes (name typos). -- This patchset is a continuation of my Linux syscall consolidation implementation and aimed for SySV IPC (message queue, semaphore, and shared memory). Current Linux default implementation only defines the old ipc syscall method. Architectures need to either to imply the generic syscalls.list or reimplement the syscall definition. To simplify and allow to remove some old arch-specific implementation, I added the direct syscall method for all supported IPC mechanisms. Other changes are simple code reorganization to simplify and all compatibility required for various ports. The patchset also adds 3 simple tests that aims to check for correct argument passing on syscall. The idea is not to be an extensive testing of all supported IPC. Checked on x86_64, i686, armhf, aarch64, and powerpc64le. Adhemerval Zanella (17): Add __ASSUME_SYSVIPC_SYSCALL for Linux Refactor Linux ipc_priv header Consolidate Linux msgctl implementation Consolidate Linux msgrcv implementation Use msgsnd syscall for Linux implementation Use msgget syscall for Linux implementation Add SYSV message queue test Consolidate Linux semctl implementation Use semget syscall for Linux implementation Use semop syscall for Linux implementation Consolidate Linux semtimedop implementation Add SYSV semaphore test Use shmat syscall for Linux implementation Consolidate Linux shmctl implementation Use shmdt syscall for linux implementation Use shmget syscall for linux implementation Add SYSV shared memory test ChangeLog | 229 +++++++++++++++++++++ sysdeps/unix/sysv/linux/aarch64/ipc_priv.h | 32 +++ sysdeps/unix/sysv/linux/alpha/Makefile | 3 - sysdeps/unix/sysv/linux/alpha/ipc_priv.h | 33 ++- sysdeps/unix/sysv/linux/alpha/kernel-features.h | 3 + sysdeps/unix/sysv/linux/alpha/msgctl.c | 1 - sysdeps/unix/sysv/linux/alpha/semctl.c | 1 - sysdeps/unix/sysv/linux/alpha/shmctl.c | 1 - sysdeps/unix/sysv/linux/alpha/syscalls.list | 13 -- sysdeps/unix/sysv/linux/arm/msgctl.c | 33 --- sysdeps/unix/sysv/linux/arm/semctl.c | 54 ----- sysdeps/unix/sysv/linux/arm/shmctl.c | 34 --- sysdeps/unix/sysv/linux/arm/syscalls.list | 12 -- sysdeps/unix/sysv/linux/generic/syscalls.list | 14 -- sysdeps/unix/sysv/linux/hppa/syscalls.list | 14 -- sysdeps/unix/sysv/linux/i386/kernel-features.h | 3 + sysdeps/unix/sysv/linux/ia64/syscalls.list | 14 -- sysdeps/unix/sysv/linux/ipc_ops.h | 30 +++ sysdeps/unix/sysv/linux/ipc_priv.h | 23 +-- sysdeps/unix/sysv/linux/kernel-features.h | 4 + sysdeps/unix/sysv/linux/m68k/kernel-features.h | 3 + sysdeps/unix/sysv/linux/m68k/semtimedop.S | 69 ------- sysdeps/unix/sysv/linux/microblaze/msgctl.c | 1 - sysdeps/unix/sysv/linux/microblaze/semctl.c | 1 - sysdeps/unix/sysv/linux/microblaze/shmctl.c | 1 - sysdeps/unix/sysv/linux/microblaze/syscalls.list | 12 -- sysdeps/unix/sysv/linux/mips/ipc_priv.h | 1 - sysdeps/unix/sysv/linux/mips/kernel-features.h | 2 + sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h | 32 +++ sysdeps/unix/sysv/linux/mips/mips64/msgctl.c | 17 +- sysdeps/unix/sysv/linux/mips/mips64/semctl.c | 38 +--- sysdeps/unix/sysv/linux/mips/mips64/shmctl.c | 17 +- sysdeps/unix/sysv/linux/mips/mips64/syscalls.list | 12 -- sysdeps/unix/sysv/linux/msgctl.c | 45 ++-- sysdeps/unix/sysv/linux/msgget.c | 11 +- sysdeps/unix/sysv/linux/msgrcv.c | 26 +-- sysdeps/unix/sysv/linux/msgsnd.c | 11 +- sysdeps/unix/sysv/linux/powerpc/ipc_priv.h | 23 +-- sysdeps/unix/sysv/linux/powerpc/kernel-features.h | 3 + sysdeps/unix/sysv/linux/s390/kernel-features.h | 3 + sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list | 14 -- sysdeps/unix/sysv/linux/s390/semtimedop.c | 12 +- sysdeps/unix/sysv/linux/semctl.c | 58 +++--- sysdeps/unix/sysv/linux/semget.c | 11 +- sysdeps/unix/sysv/linux/semop.c | 10 +- sysdeps/unix/sysv/linux/semtimedop.c | 13 +- sysdeps/unix/sysv/linux/sh/kernel-features.h | 3 + sysdeps/unix/sysv/linux/shmat.c | 17 +- sysdeps/unix/sysv/linux/shmctl.c | 59 +++--- sysdeps/unix/sysv/linux/shmdt.c | 12 +- sysdeps/unix/sysv/linux/shmget.c | 13 +- sysdeps/unix/sysv/linux/sparc/kernel-features.h | 3 + sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h | 41 ++++ sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c | 32 --- sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c | 54 ----- sysdeps/unix/sysv/linux/x86_64/ipc_priv.h | 32 +++ sysdeps/unix/sysv/linux/x86_64/syscalls.list | 12 -- sysvipc/Makefile | 2 + sysvipc/test-sysvmsg.c | 128 ++++++++++++ sysvipc/test-sysvsem.c | 116 +++++++++++ sysvipc/test-sysvshm.c | 130 ++++++++++++ test-skeleton.c | 2 + 62 files changed, 1010 insertions(+), 643 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/aarch64/ipc_priv.h delete mode 100644 sysdeps/unix/sysv/linux/alpha/msgctl.c delete mode 100644 sysdeps/unix/sysv/linux/alpha/semctl.c delete mode 100644 sysdeps/unix/sysv/linux/alpha/shmctl.c delete mode 100644 sysdeps/unix/sysv/linux/arm/msgctl.c delete mode 100644 sysdeps/unix/sysv/linux/arm/semctl.c delete mode 100644 sysdeps/unix/sysv/linux/arm/shmctl.c create mode 100644 sysdeps/unix/sysv/linux/ipc_ops.h delete mode 100644 sysdeps/unix/sysv/linux/m68k/semtimedop.S delete mode 100644 sysdeps/unix/sysv/linux/microblaze/msgctl.c delete mode 100644 sysdeps/unix/sysv/linux/microblaze/semctl.c delete mode 100644 sysdeps/unix/sysv/linux/microblaze/shmctl.c delete mode 100644 sysdeps/unix/sysv/linux/mips/ipc_priv.h create mode 100644 sysdeps/unix/sysv/linux/mips/mips64/ipc_priv.h delete mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list create mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/ipc_priv.h delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/msgrcv.c delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/semctl.c create mode 100644 sysdeps/unix/sysv/linux/x86_64/ipc_priv.h create mode 100644 sysvipc/test-sysvmsg.c create mode 100644 sysvipc/test-sysvsem.c create mode 100644 sysvipc/test-sysvshm.c -- 2.7.4