Date: Sun, 12 Aug 2018 22:33:06 +0200 From: Willem Jan Withagen <wjw@digiware.nl> To: FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Write a version for pthread_get_name_np Message-ID: <42689feb-9bd4-429b-63d7-b9193123ee47@digiware.nl> In-Reply-To: <7fa2b876-9397-da2b-cb29-56badf11b66d@ecoracks.nl> References: <7fa2b876-9397-da2b-cb29-56badf11b66d@ecoracks.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, For some porting I'm trying to write a pthread_get_name_np(), but I have run into a snag.... Tried some the the procstat code I would come up with: int pthread_get_name_np(pthread_t *thread, char *name, size_t len){ struct procstat *procstat; int pid = getpid(); unsigned int count, i; struct kinfo_proc *kip, *kipp; procstat = procstat_open_sysctl(); kip = procstat_getprocs(procstat, KERN_PROC_PID | KERN_PROC_INC_THREAD, pid, &count); for (i = 0; i < count; i++) { kipp = &kip[i]; printf("thread: %ld(0x%lx), %ld(0x%lx)\n", thread, thread, kipp->ki_tid, kipp->ki_tid); if (thread == kipp->ki_tid) { kinfo_proc_thread_name(kipp, name, len); } } return 0; } Problem only is that the TID value in what procstat_getprocs returns in ki_tid is nowhere near what pthread_self() returns. But both manual page and the include file describe the value as Thread ID. Only in sys/user.h the type is lwpid_t ki_tid; /* XXXKSE thread id */ What do I need to translate one tid into the other so I can really compare them? Thanx, --WjW
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?42689feb-9bd4-429b-63d7-b9193123ee47>