From: Pedro Alves <palves@redhat.com>
To: Doug Evans <dje@google.com>
Cc: Nick Bull <nicholaspbull@gmail.com>,
gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PATCH v7] Events when inferior is modified
Date: Fri, 07 Nov 2014 12:21:00 -0000 [thread overview]
Message-ID: <545CB930.3040305@redhat.com> (raw)
In-Reply-To: <CADPb22QX-Ey-pGiTHDNpGFQVvZfpKZsmNfkFf5kOEaNL_PzeXQ@mail.gmail.com>
On 11/06/2014 06:19 PM, Doug Evans wrote:
> On Fri, Oct 24, 2014 at 8:13 AM, Pedro Alves <palves@redhat.com> wrote:
>> On 10/17/2014 08:49 PM, Doug Evans wrote:
>>> Alas our use of thread ids is a bit, umm, confusing
>>> (in more ways than one! :-().
>>> Here, it's not guaranteed that ptid.lwp has something useful,
>>> and it may be that the target uses ptid.tid instead.
>>>
>>> See python/py-infthread.c:thpy_get_ptid.
>>> I think we should make that non-static and use that here.
>>> IOW, pass the whole ptid_t to the event.
>>
>> How about using GDB's own unique thread number instead of
>> the ptid? Doesn't seem to be any reason to expose
>> target-side details or identifiers here?
>
> Yeah, I thought of that.
> We already expose ptids.
OOC, is that just py-infthread.c:thpy_get_ptid, or elsewhere
too?
> Plus one can look at them as just an id: something you receive, pass
> around, and print.
Yes, as long as we pass the whole ptid, that works. Let's go with that.
> But I don't have a strong preference, other than consistency.
> Whatever we pick we need to use it for everything (barring compelling
> reasons to do otherwise).
>
> Setting aside concerns of exposing target details,
> are there other technical reasons to prefer one over the other?
I'm been trying to come up with some rule, but it's very hard
to say in general. I was thinking that given that we're
specifically referring to a user-visible thread, we should
prefer the GDB number, like we generally expose GDB
thread numbers to MI. But maybe we'll find a case in the future
where we do an infcall on some execution object that isn't mapped
to a visible GDB thread, and so a ptid would work better.
> Here's a question that comes to mind.
> Internally we use ptids and not thread numbers.
GDB didn't use to model non-threaded inferiors as single-threaded.
Until pthreads or similar was detected as loaded in the inferior,
"info threads" would came out empty. So there's that historical part.
(Related, I sometimes wonder about whether we should expose execution
objects finer than "standard" threads, like fibers / lightweight execution
agents (c++ N3874) / coroutines to the user as first class
"GDB threads", if the runtime has those, thus think of "GDB threads"
as the finer execution object type the user can interact with.
Or maybe that's not the best model, and exposing "fibers"
as first class citizens distinct from "threads" would be better.)
On the target/backend/core run control side, we need to work
with ptids, as we're interfacing with the lower debug APIs, which of
course now nothing about GDB's thread ids, and sometimes need to
interface with execution objects even if there's no GDB thread
mapped to it, yet, or ever.
> Do any of the reasons for doing so carry over to the Python API?
I guess it depends on which level we're positioning the Python API.
If at the same level as CLI/MI, and/or directly exposing
the user-visible objects/concepts, then GDB ids seems preferable.
Otherwise, if working at lower levels, a ptid may be better.
Anyway. To reiterate, I agree. If we're just looking at
the (whole) ptid as just an id: something you receive, pass around,
and print, then it works for me.
>
> [While IWBN if internal and external APIs used the same id everywhere,
> I'm more concerned with more technical details of picking one over the
> other. E.g., Thread IDs are more transient, they get recycled more
> often, but technically ptids can get recycled too.]
Thanks,
Pedro Alves
next prev parent reply other threads:[~2014-11-07 12:21 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-17 17:32 [PATCH v6] " Nick Bull
2014-09-24 14:05 ` Robert O'Callahan
2014-09-25 10:14 ` Phil Muldoon
2014-10-01 9:50 ` Nick Bull
2014-10-01 17:52 ` Pedro Alves
2014-10-17 16:26 ` [PATCH v7] " Nick Bull
2014-10-17 19:49 ` Doug Evans
2014-10-17 20:00 ` Doug Evans
2014-10-22 12:40 ` [PATCH v8] " Nick Bull
2014-11-17 18:13 ` Nick Bull
2014-11-17 21:25 ` Doug Evans
2014-11-18 16:37 ` Nick Bull
2014-11-20 0:21 ` Doug Evans
2014-11-20 10:36 ` Nick Bull
2014-12-02 19:20 ` Doug Evans
2014-12-04 10:45 ` Nick Bull
2014-12-15 8:33 ` Yao Qi
2014-10-24 15:14 ` [PATCH v7] " Pedro Alves
2014-11-06 18:19 ` Doug Evans
2014-11-07 12:21 ` Pedro Alves [this message]
2014-11-07 17:04 ` Doug Evans
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=545CB930.3040305@redhat.com \
--to=palves@redhat.com \
--cc=dje@google.com \
--cc=gdb-patches@sourceware.org \
--cc=nicholaspbull@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox