tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Interface to retrieve LWPs via ptrace(2)



In article <1180c509-ee6c-6fde-56fd-0e8cf01e685b%gmx.com@localhost>,
Kamil Rytarowski  <n54%gmx.com@localhost> wrote:
>-=-=-=-=-=-
>-=-=-=-=-=-
>
>On 03.11.2016 14:10, Joerg Sonnenberger wrote:
>> On Tue, Nov 01, 2016 at 03:58:10PM +0100, Kamil Rytarowski wrote:
>>> Which one is preferred for NetBSD?
>> 
>> I'd go with neither, but base the new interface on FreeBSD's.
>> PT_GETLWPS takes as argument:
>> 
>> struct ptrace_getinfos_request {
>>   size_t allocated_lwps;
>>   size_t current_lwps;
>>   struct ptrace_lwpinfo[];
>> }
>> 
>> The caller provides allocated_lwps and promises that the buffer can hold
>> sizeof(ptrace_getinfos_request) + allocated_lwps * sizeof(ptrace_lwpinfo)
>> byte. The kernel writes up to allocated_lwps entries and sets
>> current_lwps to the current total number of lwps. The caller can then
>> easily check how many entries it has to allocate and maybe repeat the
>> request.

Before adding more PT_ stuff, we should see if libpthread_dbg (td_open() etc.)
have enough stuff to support what you want. They do for gdb. This was written
for SA threads because they were M:N threads but it still works.

christos



Home | Main Index | Thread Index | Old Index