Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932733AbcDEQrf (ORCPT ); Tue, 5 Apr 2016 12:47:35 -0400 Received: from casper.infradead.org ([85.118.1.10]:41589 "EHLO casper.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751899AbcDEQrd (ORCPT ); Tue, 5 Apr 2016 12:47:33 -0400 Date: Tue, 5 Apr 2016 18:47:22 +0200 From: Peter Zijlstra To: Florian Weimer Cc: Mathieu Desnoyers , "H. Peter Anvin" , Andrew Morton , Russell King , Thomas Gleixner , Ingo Molnar , linux-kernel@vger.kernel.org, linux-api , Paul Turner , Andrew Hunter , Andy Lutomirski , Andi Kleen , Dave Watson , Chris Lameter , Ben Maurer , rostedt , "Paul E. McKenney" , Josh Triplett , Linus Torvalds , Catalin Marinas , Will Deacon , Michael Kerrisk , Boqun Feng Subject: Re: [RFC PATCH v6 1/5] Thread-local ABI system call: cache CPU number of running thread Message-ID: <20160405164722.GB3430@twins.programming.kicks-ass.net> References: <1459789313-4917-1-git-send-email-mathieu.desnoyers@efficios.com> <1459789313-4917-2-git-send-email-mathieu.desnoyers@efficios.com> <5702A037.60200@zytor.com> <492303698.44994.1459799188052.JavaMail.zimbra@efficios.com> <856357054.45028.1459802903401.JavaMail.zimbra@efficios.com> <5703E191.2040707@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5703E191.2040707@redhat.com> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1279 Lines: 34 On Tue, Apr 05, 2016 at 06:02:25PM +0200, Florian Weimer wrote: > On 04/04/2016 10:48 PM, Mathieu Desnoyers wrote: > > > Moreover, the feature set that the application knows about, glibc > > knows about, and the kernel knows about are three different things. > > My intent here is to have glibc stay out of the way as much as possible, > > since this is really an interface between various applications/libraries > > and the kernel. > > Surely glibc can allocate the space based on what is advertised as > needed by the kernel? Why would it limit itself to what is supported by > the kernel headers it is compiled against if the actual size can be > queried from the kernel? I guess the question is; can we do thread local variable arrays like: __thread uint32_t[x]; /* with x being a runtime constant */ Because then we can do: __thread struct thread_local_abi tla; where sizeof(struct thread_local_abi) is a runtime variable. Without that we cannot have this thread-local-abi structure be part of the immediately addressable TLS space. That is, we then need a pointer like: __thread struct thread_local_abi *tla; and every usage will need the extra pointer deref. Because ideally this structure would be part of the initial (glibc) TCB with fixed offset etc.