[PATCH v4] Implement basic threading support in the NetBSD target
Kamil Rytarowski
n54@gmx.com
Thu Apr 2 19:22:46 GMT 2020
On 02.04.2020 21:05, Pedro Alves wrote:
> Hi,
>
> I skimmed the patch and noticed a couple nits.
>
> On 4/1/20 10:33 PM, Kamil Rytarowski wrote:
>
>> +static bool
>> +nbsd_thread_lister (const pid_t pid,
>> + gdb::function_view<bool (const struct kinfo_lwp *)>
>> + callback)
>> +{
>> + int mib[5] = {CTL_KERN, KERN_LWP, pid, sizeof (struct kinfo_lwp), 0};
>> + size_t size;
>> +
>> + if (sysctl (mib, ARRAY_SIZE (mib), NULL, &size, NULL, 0) == -1 || size == 0)
>> + perror_with_name (("sysctl"));
>> +
>> + mib[4] = size / sizeof (size_t);
>> +
>> + gdb::unique_xmalloc_ptr<struct kinfo_lwp> kl
>
> You can use the array variant:
>
> gdb::unique_xmalloc_ptr<struct kinfo_lwp[]>
>
Done.
>> + ((struct kinfo_lwp *) xcalloc (size, 1));
>> + if (kl == NULL)
>> + perror_with_name (("calloc"));
>
> xcalloc doesn't ever return NULL.
>
Done.
>> +
>> + if (sysctl (mib, ARRAY_SIZE (mib), kl.get (), &size, NULL, 0) == -1
>> + || size == 0)
>> + perror_with_name (("sysctl"));
>> +
>> + for (size_t i = 0; i < size / sizeof (struct kinfo_lwp); i++)
>> + {
>> + struct kinfo_lwp *l = &kl.get ()[i];
>
> If you use the array variant, then here you don't need the .get(), like:
>
> struct kinfo_lwp *l = &kl[i];
>
Done.
> Thanks,
> Pedro Alves
>
Please see v5.
More information about the Gdb-patches
mailing list