From patchwork Thu Sep 22 20:44:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 673701 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3sg7lx32clz9t17 for ; Fri, 23 Sep 2016 06:45:01 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b=JvrvhDpP; dkim-atps=neutral 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:cc:subject:date:message-id :mime-version:content-type; q=dns; s=default; b=q14jsObXQs4jA2Vw CUwgx5kBiqFCz4Sut2Tv2JpphqXzafPeWzw/wbh/ERQ1UCqdF3I0yc/CvKoJbAzD cG+NTwhYrQn3c0Y+QGDWtjJW5LLpGUWtsEDXyLRwXyR0KoIJ2R5BE16L+uNdtiMl adCqbKsjwHxH4SXv3Vyr7oQGcTg= 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:cc:subject:date:message-id :mime-version:content-type; s=default; bh=OWVv27MByDIYDkA0IyqwOJ 8FtEI=; b=JvrvhDpPalTTuRtElbOA7v9FsHgYqAxNwatiOn0Y8fZmQPCxK1nPC9 sEsnC9JcDQZN2vvzXfgzJAwWsHd/lNQuOaj8YTeyMmKmfciKDoC/OeJQQkqQ7uRJ /VWpPvGFTEIrceNjDW9R3YXDEznHuZUDapoUAXa9nhqDlfdnW7PM8= Received: (qmail 22578 invoked by alias); 22 Sep 2016 20:44:54 -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 22569 invoked by uid 89); 22 Sep 2016 20:44:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:sk:NAM02-S, HX-HELO:sk:NAM02-S, 2574, H*RU:sk:NAM02-S X-HELO: NAM02-SN1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@caviumnetworks.com; From: Yury Norov To: CC: Yury Norov , Adhemerval Zanella Subject: [PATCH] Consolidate Linux readahead() implementations Date: Thu, 22 Sep 2016 23:44:28 +0300 Message-ID: <1474577068-1781-1-git-send-email-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-ClientProxiedBy: AM3PR03CA017.eurprd03.prod.outlook.com (10.141.191.145) To DM3PR07MB2250.namprd07.prod.outlook.com (10.164.33.148) X-MS-Office365-Filtering-Correlation-Id: ffa2dae6-6c9e-44df-07e9-08d3e32946f6 X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 2:dfCkpUI/jwSQSKYGNu/81Zbsb5lYangZs8625aPw9FVrGgAFKRVDyPfqrZptY6t3tyO9Skh6EWXlir/joMacxoQkToDKkFM+k4Vqp64gkpbmyRUZQxoOQKfZLpcC1rAAhR1Xg1t77tlB5TqcLcs93p5xzDyF94oxOUwY0xqItN2XukB1jZgMabM7PgeNIFHu; 3:ZhZbZ4jy8mJG8/+KuYkyGqcH6fBUHQIROtWUkEarpU5U9yMD3Q/vTguEgTNTcPJBcUPXBAx1E5xjmB19dsdHRuavV+mL1iTQsySOFNAMyG1pd4m5XEUPAWqDIxRgA3zf; 25:+k8C8iKpnu3CbtPA72zMtLK/Y/ExNqS2W7oqYWXP04TFnQVaQo446uBiYrHHmOVtkEafhb+H/Q2c53QTCtevl4O7rKw6YRvHP6ZQyD0wr3XWf/OTmcoi4Vx+nOtiR5PPK7zT/eRz2GCwwl5hdk4rK2fiLglqVBIThbhoBdDdjMvZNHbA8kVNdqQZ80MponOmM0Kc6zfHQTq9wEwvexXhB3Ha7sJ7Ta/SPeRZfWfzvAs6gkT6OLgqhdGz5eS9QSU/9i4WwGJDzEc/PEMpJGWuUdw7hEqvjX+9bvnkRc+HkjH3hgkHcOEyXu5div7FN7n9TbxvhchqNcK+k0zZqF6+5Wv9guNoCi9vWuewLbRInpRSxkIvXHJqJkwma/tDhcXGmD/wWd8PMBRTgeL88Qwg0ciDuIZ3K1maLnoD1Vk65fU= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR07MB2250; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 31:P0TfphIvFjjFW88aZfiwWEr9IEapDJB86aW30YEJ+xfIZRy3V1N8Yi3TtT17OQOefHQ2CLT+dqs1bBUhKRdvwAXg/Uzz2YYtVML7W8/JmWEm4KPnHJPruuJpU3abTOwGrC1iLtQRCbVXTO/1IZlH2DX4Lvy5XLIwKW5yw/nSge5OTkaZzp6FVNqHcdnhFyG0++LzO3abp9uRYNB5jGPb0ZxYMr6016iSBAkJwfSuM6E=; 20:9AKu5bifki9Olp3y1azz8NoQlXItVkUndkFn69JqIftkAyTIMpk7S2I/yEdX29FV57mMKn2aEPGNoad+DAq5zgbj62T3N1LvLOSNdxcer+vdMh56yfi1VXII5iUCusqdu3itOqJ1SiToru0lySYCIc/1VtlmYKuHqBAC+vubL3OWcWudaMsOth5d2j+U7kbD6MOtI2KGkGQ+UyM32Rt5Rn553YGolpJ2ja2d6SBEj9FAPXBVZ5Dhy7pw4qLDSs6+LBUOCPRG/SlqaeHujyaKVDX6+uycMtvRNFnrGhD/nbymWQ6ickldVABWbNrMwvCSaIDnIFl+jMBWcRlWSCpoPq/B3ExSmnmXmkcorJqfmzDJ1tMlYebS1Q6QMHeGOIU9SbO7MB5bXCA1j50HzpL/s7XmRDIpsWk1cZwDr2sdQgSZRSGYNJPllf4L2zKzPNFsT7b6c651ut1YOUUBjKS4tzcjbUGjUCG2nlYYjAyaFY5HaalRT5BQoSRQ44W3tILWowRTuh0z76ox/BAgkpQzQecjJ43qE5gig19VgYR+yKS9QT2mwh20sYB3X2LBn7tyjcjPz7WEtHhJA7ayuFOrWXY9x3AX9JcYr802Uxy51s8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001); SRVR:DM3PR07MB2250; BCL:0; PCL:0; RULEID:; SRVR:DM3PR07MB2250; X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 4:QqzF3zgFgzx8O3pKrsslYibL4WmohCM5PGg8SRz1KmaP3AVOPHoPDJPYmEDuUg2MAs0uUCVIe+zlrDvKDwlzeHzng7ql2cAdcJd5WFjwi7vLf/oenasF2qmVmFbZDAhfVbroTXNRQfJwa7vw9IqdW0eXCBCY5gMB5UVw3lLhky+TIgBB0TIvThVgsfvodhaA8zlnUxoYsKpTMr4PYh1lE8JQ4FmhF2Yr63AFvW64wyxJ1jILfut/SWHzYS4nAgoWsneqJ3yYgztvrbR5CyYLydKRwc1Ti2T+aINV6UPzayLenHBPJVw90Yhc6WKJqBqdefv/rNlvH4pom9TxZFtWdy3DtSsXnG7Ny04akOBRe1k5EI2DZtn24VZlriUkB1/fdej8BfwgHQXGr17dhFnJgjQf+KahjKUCyPnoTibCiR+JiI3LLi18D/UP3yKGvaVBY1Vd4r4GH3uBoqLTw7Fs5w== X-Forefront-PRVS: 0073BFEF03 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6069001)(6009001)(7916002)(199003)(377424004)(189002)(5003940100001)(48376002)(2351001)(50466002)(229853001)(586003)(5660300001)(92566002)(6116002)(33646002)(3846002)(105586002)(19580405001)(42186005)(19580395003)(106356001)(76506005)(81166006)(8676002)(189998001)(81156014)(50986999)(66066001)(47776003)(68736007)(97736004)(101416001)(4326007)(110136003)(7736002)(305945005)(7846002)(2906002)(50226002)(36756003)(77096005)(15975445007)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM3PR07MB2250; H:localhost; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: caviumnetworks.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM3PR07MB2250; 23:hbzE1L5/qqLPtOrLCQY7Ju8o8mK7Riu2Wy2g6hnS6?= =?us-ascii?Q?/mawv9J5JGWY/SqVIoKITnDLuZYtc1FV9oZZGhLSHJkoCw79FO2Xd1jgMtah?= =?us-ascii?Q?eILI8Jnh2ASdMtckTC/s9JhcHyV6BWbuVqQXSbUN1oxK44h6cJ5Qfngxcze8?= =?us-ascii?Q?Xhur2m4y5FGxHSP1RBUem7U7wIpatMivZFEWL8IzUD7HoHKiT0CScXExgI9p?= =?us-ascii?Q?CTMZdfDE9pC3f4Ve/q6xabX14cTYvdp0ztvA9rbXwiYwI0gNB1gNFujfFviG?= =?us-ascii?Q?JIsk+rXDvGuHyP4BDgXA+XtmZHwY1zxHc4386rF3RT5XivrRJFETsPakEYAz?= =?us-ascii?Q?yP44E+M/05a9IFFaMm5hVHvmCwcFBzm7W19esIXbwHErbxgdUf+HowISwfuG?= =?us-ascii?Q?e3JddZp0JGNohJv/nVqksXTP2oEMMVGFF9Hvulpgpen1sBhskGdPK2HKwUpW?= =?us-ascii?Q?kr/UJXXxsEllLQtuh4CE1rMrrT1z8U22oMFjzEDpJB787gKVv0uN5PVVNAxs?= =?us-ascii?Q?aqMfA/MOYXO1Ae6h0cC+CdjW+yZOmnaudGFZQhthu3oBe1KqRD1coe2ZydQb?= =?us-ascii?Q?GwqTtbHsnyUlVZ0UktJCSuX90g7en/X+/DFe9Djz+b0hMsjVTBLMlcsNOPEC?= =?us-ascii?Q?fAuvx4+RtP1zVcC9IOj42pMVMV4mrh8h1riA1s1B8Omr3Vr8zIyQ+9Yvako+?= =?us-ascii?Q?zZThwtTY2zp8vgIAJp8pAi87QTNGlCrtcoW0HxVIDagl8Oe63g7QQRtXgju8?= =?us-ascii?Q?UXl6NEg2Wvt56s1pT7uxsjxZ3/D7t1ofSFuvsJF2o2XMahIUL5gezevixGRf?= =?us-ascii?Q?PkO+JFcy+pl+RTAJbxowlFlAoOg5fwm78KyB0bkWugJ+aJqV/+rhJCPVBo/o?= =?us-ascii?Q?BGmxoSxP3Z29lPQBKLHMXrs8MTOMOXEKujEjp+ahAMGjo0mmu+nzhFSGQSua?= =?us-ascii?Q?t4HnF4EwKW7VaHIZlYZmg4jNZZc5iiQW8+w2ufuvQyzomMLLV1ndhwxDHx4w?= =?us-ascii?Q?znNi+YH39LNPzW+DUtJvuHqezCeJdcDWO80Y4Tj7GMn8OVWKYR1NzoGZ4WQh?= =?us-ascii?Q?+1x+NM4/G5bmASbGJlaKkmS3h15HVrpyzfAXARla8oYvw6wnY0BVcNxLVvOb?= =?us-ascii?Q?AEIhW46joJq0b9ym+kY+Rf0a+oLF3He?= X-Microsoft-Exchange-Diagnostics: 1; DM3PR07MB2250; 6:19v015rJOeOuPqU4/2O+piJcOEgfSalFd0ZPeedDBS3MgbtztD5L/grpDMeWboL3qTcve/6gzq9wdIaIb9Potw3AspjYlEf4xpcBAirfx2E0NWCqkHpwj+P6lUbWJf9d+7ko6FnnVNJstJ6H2DO+8tC1KJLkZq0M2rNiTSJGgnyWkqaRaDiM+zghldju2iSFK4TNqqO5XJ1swfa9RDy3lFgGYm8unDdLYOVZKJ+mjZasfq2Rlo6BjyvdX8bMleX7eNQwwMc//8MaZ0B/XNIpgocGYxG2Jv3tVUdFNKmQsOI=; 5:87oaCp7cLJpqIDgmSjLdUkZr9O1+adOQx+fKi6XPgO+1I6195tXhv8b5fjkU9bJK6d7ktJa2UzWBQFOIxzdtSR3ifsVJ+Fi8MyE/VwkdeXy115h4Whw7rPywJYT7LG1RE/dLJhIdrIwqNnqRBnt0KA==; 24:JmfAw1Skrh+U1Wiv7wQqesa/ZwN+1ActAWc0leNeP0BCoE0yMWuz4voUvHR7MJiteobrlHLxD18aE9DHjmOlHua2NiZfrM+/PjRDb3CvuHA=; 7:dEZ/fGb9L/Xkj0DpWWcWNKr1Yi4uZpsmn9G8LxPMEuCyrRXf8FiCWGpa4mP5uBehRVFjN8zCq9BZR2TSbgiNU5ZIK8yHukitQw2+i6IwBh8ddA0FJZjvcQjdz+IU9cIediRaIB87BExh7DdRbTY5inMRrb0qSly4ZJ5ic3OVUX1o/d1vjwg3NRAMCMBgdMtXYWJwFNgkS+tpiAXhOyZ4DEWSO8kI/LW8kpj38U0hBurknHaSneecrJ1iaPfXQEPbzUNx9gpivjasc2HF8NHEnroeP4QNHNzoqKuIbzE9XdiMmaAoSzvcvG24KoN+ocle SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Sep 2016 20:44:40.9332 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR07MB2250 All Linux users pass 4 arguments to readahead() except arm and mips. That two also pass an alignement. Usually to have single implementation, __ASSUME_ALIGNED_REGISTER_PAIRS option is used. But readahead() cannot do this because __ASSUME_ALIGNED_REGISTER_PAIRS is also enabled for tile and powerpc. To consolidate all implementations, new option __ASSUME_READAHEAD_ALIGN is introduced here, and enabled only for arm and mips. This is also the case for new arm64/ilp32 as it's the arm32 successor. 2016-09-22: Yury Norov * sysdeps/unix/sysv/linux/arm/kernel-features.h: new __ASSUME_READAHEAD_ALIGN option. * sysdeps/unix/sysv/linux/mips/kernel-features.h: Likewise. * sysdeps/unix/sysv/linux/kernel-features.h: Likewise. * sysdeps/unix/sysv/linux/arm/readahead.c: Remove. * sysdeps/unix/sysv/linux/mips/mips32/readahead.c: Remove. * sysdeps/unix/sysv/linux/readahead.c: insert padding register if __ASSUME_READAHEAD_ALIGN is enabled. Signed-off-by: Yury Norov CC: Adhemerval Zanella --- sysdeps/unix/sysv/linux/arm/kernel-features.h | 2 ++ sysdeps/unix/sysv/linux/arm/readahead.c | 37 ------------------------- sysdeps/unix/sysv/linux/kernel-features.h | 5 ++++ sysdeps/unix/sysv/linux/mips/kernel-features.h | 1 + sysdeps/unix/sysv/linux/mips/mips32/readahead.c | 1 - sysdeps/unix/sysv/linux/readahead.c | 11 +++++++- 6 files changed, 18 insertions(+), 39 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/arm/readahead.c delete mode 100644 sysdeps/unix/sysv/linux/mips/mips32/readahead.c diff --git a/sysdeps/unix/sysv/linux/arm/kernel-features.h b/sysdeps/unix/sysv/linux/arm/kernel-features.h index 628d27f..cb3b6aa 100644 --- a/sysdeps/unix/sysv/linux/arm/kernel-features.h +++ b/sysdeps/unix/sysv/linux/arm/kernel-features.h @@ -17,6 +17,8 @@ License along with the GNU C Library. If not, see . */ +#define __ASSUME_READAHEAD_ALIGN 1 + #include_next /* The ARM kernel before 3.14.3 may or may not support diff --git a/sysdeps/unix/sysv/linux/arm/readahead.c b/sysdeps/unix/sysv/linux/arm/readahead.c deleted file mode 100644 index 9824e6f..0000000 --- a/sysdeps/unix/sysv/linux/arm/readahead.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Provide kernel hint to read ahead. - Copyright (C) 2002-2016 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 - - -ssize_t -__readahead (int fd, off64_t offset, size_t count) -{ - return INLINE_SYSCALL (readahead, 5, fd, 0, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff)), - count); -} - -weak_alias (__readahead, readahead) diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 71ce57a..24216e5 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -50,6 +50,11 @@ #define __ASSUME_ST_INO_64_BIT 1 #endif +#ifndef __ASSUME_READAHEAD_ALIGN +/* readahead() adds padding to registers if this control is enabled. */ +# define __ASSUME_READAHEAD_ALIGN 0 +#endif + /* The statfs64 syscalls are available in 2.5.74 (but not for alpha). */ #define __ASSUME_STATFS64 1 diff --git a/sysdeps/unix/sysv/linux/mips/kernel-features.h b/sysdeps/unix/sysv/linux/mips/kernel-features.h index b486d90..88f4f5e 100644 --- a/sysdeps/unix/sysv/linux/mips/kernel-features.h +++ b/sysdeps/unix/sysv/linux/mips/kernel-features.h @@ -31,6 +31,7 @@ /* Define this if your 32-bit syscall API requires 64-bit register pairs to start with an even-number register. */ #if _MIPS_SIM == _ABIO32 +# define __ASSUME_READAHEAD_ALIGN 1 # define __ASSUME_ALIGNED_REGISTER_PAIRS 1 #endif diff --git a/sysdeps/unix/sysv/linux/mips/mips32/readahead.c b/sysdeps/unix/sysv/linux/mips/mips32/readahead.c deleted file mode 100644 index 80170c3..0000000 --- a/sysdeps/unix/sysv/linux/mips/mips32/readahead.c +++ /dev/null @@ -1 +0,0 @@ -#include diff --git a/sysdeps/unix/sysv/linux/readahead.c b/sysdeps/unix/sysv/linux/readahead.c index 92e5428..d31bd6e 100644 --- a/sysdeps/unix/sysv/linux/readahead.c +++ b/sysdeps/unix/sysv/linux/readahead.c @@ -23,13 +23,22 @@ #include #include +#include #ifdef __NR_readahead +#if __ASSUME_READAHEAD_ALIGN +# define __READAHEAD_ARGS 5 +# define __READAHEAD_ALIGN 0, +#else +# define __READAHEAD_ARGS 4 +# define __READAHEAD_ALIGN +#endif + ssize_t __readahead (int fd, off64_t offset, size_t count) { - return INLINE_SYSCALL (readahead, 4, fd, + return INLINE_SYSCALL (readahead, __READAHEAD_ARGS, fd, __READAHEAD_ALIGN __LONG_LONG_PAIR ((off_t) (offset >> 32), (off_t) (offset & 0xffffffff)), count);