From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb34.google.com (mail-yb1-xb34.google.com [IPv6:2607:f8b0:4864:20::b34]) by sourceware.org (Postfix) with ESMTPS id EA9343858D33 for ; Fri, 12 Jan 2024 07:55:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EA9343858D33 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=umich.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=umich.edu ARC-Filter: OpenARC Filter v1.0.0 sourceware.org EA9343858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::b34 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705046121; cv=none; b=YNNe8O7JbB9U1/M57K2bJLghFajiZpDXvcjEh9MzZl5icZ7CpWY+n2rp4tRg45ymwaqj9Etm+2lvGabuVDGjMEFUTMaibIkOgLdZQU5qv1dYeaAuWbbZwtrM7fXst+BB/JsHnmnsWuQD5fS8HLmfF9+uhqyVJwDzC7D3MSBHu6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705046121; c=relaxed/simple; bh=5ITpYkR884yqri38xuduUKDnyJpYm3zJd/rs2VP7rrU=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=Fe8/LRMDlC55dgX4ZotAMi/drK2GtsBqhJN29gMUdbqQuNQynsXqnBbcCRcVKiOVStfFzD8/le5JZwHfzxdPeFAeCQJn6vGhDiJ04edt0/kx4yZ59yxDz/+7El+qit8cVsLXX8G0sFXCmQp1ApHV+9IIiaWVbzWQYum5/pIw4F4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yb1-xb34.google.com with SMTP id 3f1490d57ef6-dbe69afb431so5417589276.1 for ; Thu, 11 Jan 2024 23:55:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=umich.edu; s=google-2016-06-03; t=1705046118; x=1705650918; darn=sourceware.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=OdukTTyWAc8+k31D4CVJH/JAzAvxhFxHtDnMFskUdDM=; b=oX6zFQXaErClJxGKVKg36DPdRMKdrIbYW0XMKQPZk//U5/CFxlq87IBi6E80SH1F+Z nLIrUU8Sr35rWdfOEvWzo3he1EXwMByVOZUn7QyICvW/Ho+V9phk7GjLbUDezlPb2Xp8 RoeiXH02z9aXTkhWWlZHLTJU+E4RWNsbXXNJCV9jx0LElrLEBa9G0c4aZ4Fiam0QtpFy 3gI1dg+4lIg6wekVpzJDGKw4555Arluuq1ps8e3woMw6uhPF/DCiw+p1DZfW2HrKcSSX yj03qtfcPDHj28x/uAjP0jU3Rz5KiMWnYQwGEEmBAXJfX3BBa/8LguReR4zbfdlZYzgr AaiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705046118; x=1705650918; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OdukTTyWAc8+k31D4CVJH/JAzAvxhFxHtDnMFskUdDM=; b=TbQ0SvqtP1DZ5bnQEeANGY0eCFi+T2J9RR6SwbU7EhDvGPsVqVNrgy/InzYnW795Fm 82qlGDI2VGqEdcL996tbpC6yHB+Am5aWwddtdkqjj6iZfIk04L3My7oGPRojOfadEiqk xtpldiMyZq8aitI0T8TSaj3eomaI5T/TxsgVP7FzIzOb22AA1C6fio/ZuZgz6KvBiOdH Dfgd8BMvQCzO6qAg352QmUnhJX2fnLdEfjpnsmM2Tmy+eSoBhp9wNBE3uIQ4leloTZIQ 9lAxdhshqjC8diDhwsH1Va7JRxHlcrV4j3fvzT+q8Rt7yn67lt4uLy/Ieqf+ljy6vpGT RWNA== X-Gm-Message-State: AOJu0YwImDDT7m4ToNGC1Uz3FvHmsXOuqNSMIs5P98DZUprbohYSNueh 9tHZA/jp3cvLaxH7rVKOLmyQn70or68kMoeU5t9DGDvRo+7iQQ== X-Google-Smtp-Source: AGHT+IGkLIM8tPxPI0lyIK33ma+ye+DUKRBVnhYu8AYgTBhtN8NvT4VUcBoDgxeH3xqEzSGWlq4WCm5ubXvI7O8r2Gg= X-Received: by 2002:a25:9344:0:b0:dbe:d45a:85d5 with SMTP id g4-20020a259344000000b00dbed45a85d5mr339650ybo.28.1705046118340; Thu, 11 Jan 2024 23:55:18 -0800 (PST) MIME-Version: 1.0 References: <87a5pbv9na.fsf@oldenburg.str.redhat.com> In-Reply-To: <87a5pbv9na.fsf@oldenburg.str.redhat.com> From: Trevor Gross Date: Fri, 12 Jan 2024 02:55:07 -0500 Message-ID: Subject: Re: RFC: A way to get a TID from a pthread_t handler To: Florian Weimer , Adhemerval Zanella Cc: Trevor Gross via Libc-help , jistone@redhat.com, "Carlos O'Donell" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Thu, Jan 11, 2024 at 4:32=E2=80=AFPM Florian Weimer = wrote: > > * Trevor Gross via Libc-help: > > > It seems like there isn't a good way to get the thread ID from a > > pthread_t. If you are within the thread then you can call gettid(), > > but there is no public API to get a spawned thread's TID after calling > > pthread_create(). > > > > This value is stored in the pthread, so a new public function could > > just be a basic getter: > > > > pid_t pthread_gettid(pthread_t threadid) > > { > > struct pthread *pd =3D (struct pthread *) threadid; > > return pd->tid; > > } > > > > Would an addition like this likely get accepted? Or is there anything > > overlooked about an easier way to recover the spawned thread's TID? > > We should probably make a copy of the TID inside pthread_create and > return that from pthread_gettid, instead of pd->tid that might be > cleared by the kernel upon thread exit. This way, pthread_gettid > remains valid until pthread_join is called. > > Thanks, > Florian > As in, store a second pid_t value within pthread? This sounds doable, I think that would sidestep a lot of the problems listed in [1]. Maybe it could also be used other places after a INVALID_TD_P check, such as at [2], to still return something somewhat valid if the check returns a false positive. Adding Adhemerval based on the thread, did you ever prototype an implementation for this? (pthread_gettid_np, [1]) - Trevor [1]: https://inbox.sourceware.org/libc-alpha/6d79a213-0df2-be8e-3596-e010f3= 66a34f@linaro.org/ [2]: https://github.com/bminor/glibc/blob/520b1df08de68a3de328b65a25b86300a= 7ddf512/nptl/pthread_getcpuclockid.c#L38