Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp2674415ybz; Mon, 27 Apr 2020 02:17:44 -0700 (PDT) X-Google-Smtp-Source: APiQypJveCWLDV7dMR1LiC0pET4niheWd0FjI1TvW4h6Xuf7zjPLJz9LVW4LtnHBEmQCm3j+d1fX X-Received: by 2002:a50:cf4d:: with SMTP id d13mr18190754edk.175.1587979064338; Mon, 27 Apr 2020 02:17:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587979064; cv=none; d=google.com; s=arc-20160816; b=M/KMaBNsgohzn55HuCtE1sEWxX4Sl4u45ZKoaAk7XYiv+Oo3w5llLy0Xk0d0uHKZL7 rW9od4AeukQ+Ejem9qR5D3NU7wqdsT0qaJqBhGU4HodFlydbvrBhs2iBHa8xoxOkGg4D 6qh+WmKQzZMKNbUsyQhld8BSRYVoorD5ME95UkAQ1lyEHg36nBbJ/14OznttiHYZcnq9 dXyTJoi1t8y0jTWk/rIx/JKI6gjTKnzb6c2Owuo8kMj5GA+Yx7/FUgMWyjRodXnuBYef DIXTLAmDvALkSFGyyRNpmfTTk88Uju0XIeRilmPyDNQ2WSURBgR8KwMzINY9JOS/X393 Ze4Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:in-reply-to:date :references:subject:cc:to:from; bh=45mN+s8+9UpzyRD6GKsXlNdeAdOyVw2uHVwWLMbZep8=; b=iG4s4UfyBeidhp0jySlr/VwfVjBWJTUo39xhtUR9p3OYbn0Q+4mzBEOiJmfDzbHNeN 2OkWwWfwkSNePX5phu/ZusmRhfgtgsFZDalxV00RlNTZ3JH3NvKVFnWu6y7JaWrlEQiU /BJQ268yk2Il7vwkLi4MV8tJK3nxmGSZIilQ0zkZs1BBjVWvgAKHnE/XoIVbEH9u93cW NO3Pq+RkVyvX1GeAIKRfMK03MijBYd9GGKH6JGkLs2D8Mqqm3Icxh12eRSiaghLhyPRE 7FqGW8d/ELZJkwWvo6KEXnNz0/6M0Cebtk+bCgb+SrEzK9SXfcCpjv4zyL9t/ZWSbWpP ozgw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w25si7280271edq.368.2020.04.27.02.17.21; Mon, 27 Apr 2020 02:17:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726831AbgD0JNj (ORCPT + 99 others); Mon, 27 Apr 2020 05:13:39 -0400 Received: from albireo.enyo.de ([37.24.231.21]:46340 "EHLO albireo.enyo.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726243AbgD0JNi (ORCPT ); Mon, 27 Apr 2020 05:13:38 -0400 Received: from [172.17.203.2] (helo=deneb.enyo.de) by albireo.enyo.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) id 1jSzpV-00046J-PD; Mon, 27 Apr 2020 09:13:33 +0000 Received: from fw by deneb.enyo.de with local (Exim 4.92) (envelope-from ) id 1jSzpV-0007Nh-NC; Mon, 27 Apr 2020 11:13:33 +0200 From: Florian Weimer To: Mathieu Desnoyers via Libc-alpha Cc: Carlos O'Donell , Mathieu Desnoyers , linux-api@vger.kernel.org, Boqun Feng , Will Deacon , linux-kernel@vger.kernel.org, Peter Zijlstra , Ben Maurer , Thomas Gleixner , "Paul E. McKenney" , Paul Turner , Joseph Myers Subject: Re: [PATCH glibc 6/9] glibc: sched_getcpu(): use rseq cpu_id TLS on Linux (v7) References: <20200326155633.18236-1-mathieu.desnoyers@efficios.com> <20200326155633.18236-7-mathieu.desnoyers@efficios.com> Date: Mon, 27 Apr 2020 11:13:33 +0200 In-Reply-To: <20200326155633.18236-7-mathieu.desnoyers@efficios.com> (Mathieu Desnoyers via Libc-alpha's message of "Thu, 26 Mar 2020 11:56:30 -0400") Message-ID: <87a72xz3ya.fsf@mid.deneb.enyo.de> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Mathieu Desnoyers via Libc-alpha: > diff --git a/sysdeps/unix/sysv/linux/sched_getcpu.c b/sysdeps/unix/sysv/linux/sched_getcpu.c > index c019cfb3cf..2269c4f2bd 100644 > --- a/sysdeps/unix/sysv/linux/sched_getcpu.c > +++ b/sysdeps/unix/sysv/linux/sched_getcpu.c > @@ -18,10 +18,15 @@ > #include > #include > #include > +#include > #include > > -int > -sched_getcpu (void) > +#ifdef HAVE_GETCPU_VSYSCALL > +# define HAVE_VSYSCALL > +#endif > + > +static int > +vsyscall_sched_getcpu (void) > { > unsigned int cpu; > int r = -1; > @@ -32,3 +37,21 @@ sched_getcpu (void) > #endif > return r == -1 ? r : cpu; > } > + > +#include > + > +#ifdef RSEQ_SIG > +int > +sched_getcpu (void) > +{ > + int cpu_id = atomic_load_relaxed (&__rseq_abi.cpu_id); > + > + return cpu_id >= 0 ? cpu_id : vsyscall_sched_getcpu (); > +} > +#else > +int > +sched_getcpu (void) > +{ > + return vsyscall_sched_getcpu (); > +} > +#endif This patch needs to be rebased on current master, but the direction looks right to me.