This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: gcore and nptl threads on linux
On Wed, Mar 05, 2003 at 07:56:01PM -0500, Andrew Cagney wrote:
>>I would think the null_ptid would serve in such a case.
>
>
>I guess the issue is that we should be dumping the set of LWPs to the
>generated core file, not the set of threads. It seems to me like GDB
>should be aware of the list of LWPs, and it shouldn't be hidden in each
>individual thread package.
You mean add them to the `struct thread_info' list? Why not (ignoring
technical realities for the moment :-)?
Well, I wouldn't do it that way. I haven't really designed this, so
bear with me if it has some squishy spots.
I think there should be two lists:
all threads
all lwps
I believe in `zero, one, many':
- lwps
- processes
- threads (as in pthread)
- threads (as in a java interpreter thread)
- tasks (as in ada)
Each has something like:
- an architecture
- a target
- an owner?
For instance, an ada task might be implemented using a p-thread, which
might in turn be implemented using an lwp-thread. Only, the task is
doing an rpc to java interpreter thread running in a separate process.
Each category can either maintain a local private database, or they can
all share a common database. If the info is more central, it becomes
easier for the user to query/manipulate it.
Should the data structures be the same? I don't know. The mapping
between them would be defined by the thread stratum; its role would be
to take thread requests, convert them to LWP requests, and pass them
on. The process stratum would be responsible for managing all of the
LWPs.
Things to do today should include throwing out stratum (along with the
bath water).
This has some advantages, I think. Here's one: we would have a logical
interface for reporting an event from an LWP that doesn't currently
have a thread. This happens in LinuxThreads, as I've mentioned
recently. The thread stratum could see that the inferior ptid was just
an LWP id and pass the request along no questions asked.
? That sounds a bit up-side-down, shouldn't events be propogating up -
lwp gets to see them before thread?
Hmm, definitely some loose edges in that one. Should both an LWP and a
thread have a regcache? Might work.
Don't forget that a regcache is just a local performance optimization -
a look-a-side buffer.
Andrew