From patchwork Thu May 10 18:00:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 911494 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-92420-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=cavium.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="JULTWsQY"; dkim-atps=neutral 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 40hgzL6vThz9s15 for ; Fri, 11 May 2018 04:02:06 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:message-id:subject:from:reply-to:to:date :content-type:mime-version:content-transfer-encoding; q=dns; s= default; b=dH+5sJMiaEyfIZfPtJjIPp6qL2PWn3V6OM/YcamSdsGxnvQu0M8O5 DtAZm/1vsi8f98Sk/zBaGkZFIax8385n7zDz5EQlXmICfk4NfiSXR0uLn5L/ZY3f Soisqqsqdnp86txH4F1eSEvN/8Dvouz444B/JzkOX7kJj0RH8+voKc= 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:message-id:subject:from:reply-to:to:date :content-type:mime-version:content-transfer-encoding; s=default; bh=XPkDpH57RfNNo6w430H7nEns1As=; b=JULTWsQY+a862tx7dzFa0wXY48oz fWgLkk5n1YpcqFDP5+0YUfzitVRQ+4BVbt6iJOOfGHzJQG4888gOlvtlcphiMJT+ AF0DtvH+NThov7f/hNVW5Zewfc/45YTOoP+DBG1cspD0RuRHAt/4I01tdrUebUHf WiEx2YWQY6pUd5A= Received: (qmail 4194 invoked by alias); 10 May 2018 18:01:24 -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 4023 invoked by uid 89); 10 May 2018 18:01:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=100000000, 5.5, 55, H*MI:227 X-HELO: NAM03-DM3-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Message-ID: <1525975253.28825.227.camel@cavium.com> Subject: [Patch] Use VDSO interface for gettimeofday on aarch64 From: Steve Ellcey Reply-To: sellcey@cavium.com To: libc-alpha Date: Thu, 10 May 2018 11:00:53 -0700 Mime-Version: 1.0 X-ClientProxiedBy: CO2PR04CA0112.namprd04.prod.outlook.com (2603:10b6:104:7::14) To SN6PR07MB4574.namprd07.prod.outlook.com (2603:10b6:805:5f::18) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB4574; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4574; 3:5eKSfC9vW4pYavWp3pkzyV8rSWHD1SzZRz4KGJbnRnOKzxJjl8A42GB7xPPInnWi1WtFZPCJTqHpb/3wzG4+q1OmVSB3gpxw0U/xYJKiD8VKxZ8EfQtnJpugf6c8tClUmw5cvKuvB3ORN6Y9FRahSWU2ymACEAMsR/MMO/bb2nw8us+vpeIMDr9Y1n4Tio1birbY/pkXZQjjH4u/k/gvnOSODZcLIinkjeMB/TH8vGwCtcgNRJWOpd1Aoe72+kd4; 25:I97AEfw49QbRIk8RZooaG/8LNxC9LXlZyIJau12vshA9+zu6d4psqT6cSRCJZ2q/7Yj96vkDQIjLAEwftpz9CKilanVqCl3KxBI8IdIbYJ9D0Q1vRCde6V1aG6q2itsXH8X8nRkI/TCnQAjngTARSx7f7t6DThWwgTxJY9UYgNMMpuFWDbfCS5p9DHjie69vAXK/DVzxIYRbQkxTnHSuJ9ld9HddD1kgp8YzBXjJ6QHNw74xq+W0M8jnfqwaFIwthDjNKkpLiwmUTqEkp0XrMrLkSdTLBuntnvyml44d+u1eL/BjMnoyKwrVXhTHZWkmYxax0QqXWZZYEY6n1vSXnA==; 31:wPNhZSQ04hAQhFWZ+/faC7kz1cFPVKeOsgVIid55pnUjUn63+2h/diMmMJgF6CilyHEznOmnvZPd8zzDyhvFx+gstBp+BIH9isvyM2+KHu0Ul2oTSDJP/LTNoWWoVg2Fb66KASVi+MRUySDUrDHmg4L0j/rDNrI0qOzSt+wnr28E3YuqsrCtLhODgDlRUv6qHMe8xSB9aH9ApA/YKha/K2fbVcyaruwbdcbcZRad70w= X-MS-TrafficTypeDiagnostic: SN6PR07MB4574: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4574; 20:wUnYjeUFhUP+Pvtupl3Cz7fYq1COuKtX050F/2n0+EKC4uoeougwcpVPuvK2bn1NpEDytkaZE1elU6mui8GVTQW76Chr7WcPXMSJoSZGe0aZmQmcuKJJ3El2XvzVKmOKaCwXyX4o2QLhpMn2I2dXNHx3z8k/gBYm9NbXAqennJ/gppfg6QwGpmsNGu6Aytl0X/jAzh6bUrKD7eqYC57I0zCDr4LMvTwkHU16BAwiCiEGh9Tr7Lwub+E7o005Z6Vb8N2dUTRskQ7YCva6Mdy9ohsChO2zZ8QhJYNNh19rN/ST32PXxH+e4qjQrMeuJH8wQXQtaeSR7+/7drJcw8YTqxIL44zeMLrnIZY+TQt57gn7nrtilP+AVYY/5EwHuL63n37ri0FioZd4IANLUae0jm5dPV9FrD8nQG7ZIe9JJSUdhZuL+TMb8mfz0NlYFyVgIbZyHgZcaOgRfmGnG4LbhzEDM4wG6Vu+DATyHC7VKWOLo+QBO7ToQdjZ4gaUU8qB; 4:T00xEBg4B8F/KzjnGJEoQQj8yXOdhSI28kuPQtiT6bGLUxhQ9Jg8iyAZ5e7ISEAAUSUoZfpBpw+fF+W7kPC26L6TFWWLxerlOBsKdSG6fwzJ9LAHMTrbturzNhmW0hQ4O+Am5lhR2Lj99BkJnq8WTTFD/R368fDpilSjEswe30cpuDFWIS4kCGjeZYJXksRpmxhxjmV9uaeWWTXNDKNTGD6ib3lT/t6mK77GH1J1pBlt5MkmoeozCIe7LZf63cjO2e9c1kwuYsDjg3YyVNeh0Hl1t1vPKf62pCZzhyHhiGLUy/TBhyhTRByh3AnIUF3grMPw0R/bnj5Iu/WGfMPxEBBkgU2z6MWmVo1D3Eg6dks= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(250305191791016)(22074186197030); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123560045)(201703131423095)(201703061421075)(201703161042150)(20161123562045)(20161123558120)(6072148)(6042181)(201708071742011); SRVR:SN6PR07MB4574; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB4574; X-Forefront-PRVS: 066898046A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(366004)(189003)(199004)(377424004)(50226002)(106356001)(47776003)(23676004)(50466002)(36756003)(53416004)(43066004)(53936002)(52116002)(103116003)(6486002)(2906002)(6916009)(5660300001)(3450700001)(305945005)(2870700001)(105586002)(97736004)(6666003)(5820100001)(69596002)(3846002)(2616005)(476003)(8676002)(26005)(68736007)(8936002)(1857600001)(7736002)(6116002)(72206003)(6306002)(6506007)(81166006)(25786009)(81156014)(498600001)(386003)(486006)(66066001)(956004)(6512007)(16526019)(186003)(99106002)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB4574; H:sellcey-dt.caveonetworks.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BSN6PR07MB4574=3B23=3AwoQ3?= =?utf-8?q?EFR51OgZR7FSM7mLXZaPkc87nA0HFH6Il2+kgXNqyCPBCPWpVEmBLnjZ?= =?utf-8?q?NSCSjOv3dXmqNChqaUd7WJmveIkkDAZewmKC/OKyISvrRg3O7HKKqye5?= =?utf-8?q?0u43L4Q4kyEZtYruRPYRYEhHfs2ZgTe5MayJd71N+EaEiNSq2EkMFzdh?= =?utf-8?q?npoxTctUHvINUJN4DmarVi/O4Vj77a2rpqAAiTBoMc/h8FgSkKxmc7Ey?= =?utf-8?q?8r9X8VHcs7gKDYjSHpnONyNA1dinx6hJkUOFny32XH1ITBsWqHr54gXt?= =?utf-8?q?tCN2+sOEXTHLXfyQmeqiX02n3K/crqFRpgZ9dqukB0HYD8V7kXHTNSI1?= =?utf-8?q?we9kj4ZXPe2pdO5FrA4SbVWsehLuyZXWlcG3IV79RyMDtnImny/zP3io?= =?utf-8?q?DAVDej4mABL/UIRnGuneqdTPEFlLaI+kp/xDqOdMhf4nhJ93T7P27Pmo?= =?utf-8?q?dxoBMMkgkGe5oa0rTu+Ap9eQEuMgIMOqm+zQ6SBqdiFmLTz1XJITx4Sx?= =?utf-8?q?Ae/BT5ms4NAU5EeP+ClLO6LGy8nrJJxMvMEVSG8w64xS+744klKtk1Be?= =?utf-8?q?nHqyW/Y4ZYg9XG+EFT+8uS7O3lWvaGi6acE7wlJJoWmCvXs2o9OI88/f?= =?utf-8?q?ZOkh4B/BvORtFCuwIqYIyJjhYSDgFbWw2N/oR+M+p06lAo5AF9Tc9TGQ?= =?utf-8?q?k9GKcgvVoZRBytiC8jw78XMRPZokWU6OKyAGOH+ZcMgI8536UU7HDzaR?= =?utf-8?q?8u2Fvzw2lgHzd9ONAcmpZY+1hcwLR36ovD+gS/NvgO9lWrtQ5kjG+SUN?= =?utf-8?q?onYtm+ZSrYXCe6LLwHz8obCNiYYhq1SmFTpP0/93LQa7w82YKo/0RaYk?= =?utf-8?q?2zKJL5H2+Kfh+ZSMY/2YWX055uIQ7i2ORtcrqbpZ+HXl2QSZ7nB5IKE/?= =?utf-8?q?LcaeUxhhoWontOSAl6NRotfvsXYR3d8tsHeo9eaNNDKIzDO83VLYNBhd?= =?utf-8?q?O/lX2xx5j2fudlPrV308tatzre7SKH+Ii7/JiF9/bEs7DUJLTUa1xnXQ?= =?utf-8?q?ZPFd27azazIFPrTtz4t3TDNeD2/cohMwZDb+vUuPcKlP5RQ5Uu2/SMej?= =?utf-8?q?X7v6oBUtQ+jI1EIT6O924jbqHw3oKOUg079qVZjME2DVassokImqfXjc?= =?utf-8?q?Sx7L694aEOEh21yL4F43ndvX8bWVkGzCLFJHwCJZ4nUAL8qcfXkgD0ec?= =?utf-8?q?ghYGwpkiYVNKNXG/KIlXzr89jDNLOiPFyciq?= X-Microsoft-Antispam-Message-Info: MWBDQe4VyXs6elFw4z5M93QfhDtyv36R6SWmYt9nNG3vgL/BUrsS/P/ig2I8rwIExyVHqndEEY25s55gaSoYz2DPnA8TQnuR9I/0fMQlV2CXbcSVlPUeW248KiA6sbPD6OjD0+pg+VNK2ZN6Wxdjvm+C9pOWtxrZtYvcCZMv1OMwan3qAuiwSb7S5MDiAHaU X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4574; 6:8Oip6kmgyfEotXdZMRPElSt4asvPRN+VKX+OlTDsYugYrg10yl/PwRCUeVbqd+Oi75r8UUpggEgbuWW4256dA8ETW3xtCG8oX1hLc014iS1MRe3cQeEmR6e1ROVKUpAFoAUTShYjS/W/twSp8uSkx+/fIubxFXOUWhphaDaX5ss6v7FznPJykkTPdxjJUWQhtz3ogxc1DfQR3z0Zx0ourkh5ld9lXtlvFwIDmoXVBVe38j2qq8bWVWtZRLf6VAA5BIvrOXZ7pMvLCk3L+DhTSEmfQUnqeH0EHv2zF5H18c0TKDJyAeSzoEn7d81voAiATmnNU8RiX9ay+zd1OXGW9Ht4wwGFgF7CJk96Iq4CZ4pJ2K6gV+bQK+9QujfKGKWz7TQqsxJssNAnQJ3h3GC7jiiG02E/3pKmkw7YFgNogSqkTk7BVoDTIQI4VCwoioubIFsBpOWl0WrR1T3NaGpefw==; 5:wC/zqhpAPz84xlhPzTDPdDCMJ0FTblIvwNDr6Dkg6MzyxMJSwnLFnERbmRM5+HyDz4xHvpYGhAnPPTEDWZSxApIE5KlSVHNHdAyBwujSN9Qbyt2FQ4lrHkmb4F82kAYpl8+BBIirNlH9CbpiE+0xp655SuamNvA7HP5jKFWUZDU=; 24:o1kexDlDrRRJrfqVJRD+xshkWm3ntL2IxcYe054+G0s5MCKWn/3MzMjDYF87tiCXmD9trL6xB8dr9DRL+iYGUy5T4dyCSp7Tbi14s3TlMXk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB4574; 7:C5BrojJex/3B62G6tmRb+AjEg9oIXGM7UKR4WftuwWAMTRnt4+KfNzprWTV086QzIVzk5mjg9kwbF6Hy/c23B0aJXkO9N0Mx2CEdWnUN3QYMeTD/2hYYD51zQ2y1SD7xQj9UoajkmiZyfUalU7F2le4s+nXrcbkZWHJX3twGWDPgdMOIk+3mJoL5BLVNxbFeTEr5w8d7O+6wFPGmDywEGLQq6EpUia7FM1eBVPl6WRp7pM0mAmGF8DbkixXpNpG+ X-MS-Office365-Filtering-Correlation-Id: 772fc430-9896-4817-8a96-08d5b69ffb19 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 May 2018 18:00:56.9103 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 772fc430-9896-4817-8a96-08d5b69ffb19 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB4574 This is a Aarch64 version of gettimeofday that uses the VDSO interface when it is available.  I did a test with 100000000 gettimeofday calls on a T88 and the time went from 7.1 seconds to 5.5 seconds.   I also ran the glibc testsuite and I did not get any regressions. OK to checkin? Steve Ellcey sellcey@cavium.com 2018-05-10  Steve Ellcey   * sysdeps/unix/sysv/linux/aarch64/gettimeofday.c: New file. Reviewed-by: Jonathan Nieder diff --git a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c index e69de29..973b6ff 100644 --- a/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c +++ b/sysdeps/unix/sysv/linux/aarch64/gettimeofday.c @@ -0,0 +1,69 @@ +/* Copyright (C) 2018 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 +   .  */ + +/* Get the current time of day and timezone information, +   putting it into *tv and *tz.  If tz is null, *tz is not filled. +   Returns 0 on success, -1 on errors.  */ + +#ifdef SHARED + +# define __gettimeofday __redirect___gettimeofday +# include +# undef __gettimeofday +# define HAVE_VSYSCALL +# include +# include + +static int +__gettimeofday_syscall (struct timeval *tv, struct timezone *tz) +{ +  return INLINE_VSYSCALL (gettimeofday, 2, tv, tz); +} + +/* PREPARE_VERSION will need an __LP64__ ifdef when ILP32 support +   goes in.  See _libc_vdso_platform_setup in +   sysdeps/unix/sysv/linux/aarch64/init-first.c.  */ + +# undef INIT_ARCH +# define INIT_ARCH() \ +    PREPARE_VERSION (linux_version, "LINUX_2.6.39", 123718537); \ +    void *vdso_gettimeofday = \ +      _dl_vdso_vsym ("__kernel_gettimeofday", &linux_version); + +libc_ifunc_hidden (__redirect___gettimeofday, __gettimeofday, +                    vdso_gettimeofday ?: (void *) __gettimeofday_syscall) + +# undef libc_hidden_def +# define libc_hidden_def(name)                               \ +  __hidden_ver1 (__gettimeofday_syscall, __GI___gettimeofday,  \ +               __gettimeofday_syscall); + +#else + +# include +# include +int +__gettimeofday (struct timeval *tv, struct timezone *tz) +{ +  return INLINE_SYSCALL (gettimeofday, 2, tv, tz); +} +#endif + +libc_hidden_def (__gettimeofday) +weak_alias (__gettimeofday, gettimeofday) +libc_hidden_weak (gettimeofday)