This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: bsd-kvm target, always a thread
> From: Pedro Alves <pedro@codesourcery.com>
> Date: Sat, 9 Aug 2008 12:27:34 +0100
>
> On Saturday 09 August 2008 09:32:57, Mark Kettenis wrote:
> > > From: Pedro Alves <pedro@codesourcery.com>
>
> > Hmm, it is unfortunate that a process ID of 0 is "verboten", since
> > that's what you are really looking at with "target kvm". And it
> > should be possible for me to actually make all the running processes
> > visible as kernel "threads".
> >
>
> > I guess your diff is right, although I'd prefer a less arbitrary ptid
> > to be used. Would something like ptid_build(0, 1, 0) work?
>
> I'd prefer to get away without pid == 0. I'm going to
> introduce later a "struct inferior" which holds an "int pid", and
> we will match a ptid to a struct inferior by its ptid.pid.
> I'd rather avoid having an inferior with pid == 0.
>
> Does something like this work for you?
>
> ptid(42000, 0, 0) -> for use when we pass around a
> ptid representing the whole inferior.
>
> ptid(42000, 1, 0) -> in kernel
>
> ptid(42000, 1, 1) -> process 1.
> ptid(42000, 1, 2) -> process 2
> ptid(42000, 1, 3) -> process 3
> ...
Something like that'd work fine for the OpenBSD kernel.
> These are internal ids, of course. We only show them what we
> want in target_pid_to_str and target_extra_thread_info. The user
> doesn't need to know anything about these ids.
Sure, I'd just think you should use something that's a bit less
arbitrary than 42000 (which could be confused with a real process ID)
here. I see that remote.c uses negative numbers for special cases.
Would using -1 or -2 work for you?