This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]