diff options
Diffstat (limited to 'source/Host/freebsd/HostThreadFreeBSD.cpp')
-rw-r--r-- | source/Host/freebsd/HostThreadFreeBSD.cpp | 77 |
1 files changed, 34 insertions, 43 deletions
diff --git a/source/Host/freebsd/HostThreadFreeBSD.cpp b/source/Host/freebsd/HostThreadFreeBSD.cpp index a4302a9e67bf..97d4d9d05b66 100644 --- a/source/Host/freebsd/HostThreadFreeBSD.cpp +++ b/source/Host/freebsd/HostThreadFreeBSD.cpp @@ -14,7 +14,7 @@ // C includes #include <errno.h> #include <pthread.h> -#if defined (__FreeBSD__) +#if defined(__FreeBSD__) #include <pthread_np.h> #endif #include <stdlib.h> @@ -26,54 +26,45 @@ using namespace lldb_private; -HostThreadFreeBSD::HostThreadFreeBSD() -{ -} +HostThreadFreeBSD::HostThreadFreeBSD() {} HostThreadFreeBSD::HostThreadFreeBSD(lldb::thread_t thread) - : HostThreadPosix(thread) -{ -} + : HostThreadPosix(thread) {} -void -HostThreadFreeBSD::GetName(lldb::tid_t tid, llvm::SmallVectorImpl<char> &name) -{ - name.clear(); - int pid = Host::GetCurrentProcessID(); +void HostThreadFreeBSD::GetName(lldb::tid_t tid, + llvm::SmallVectorImpl<char> &name) { + name.clear(); + int pid = Host::GetCurrentProcessID(); - struct kinfo_proc *kp = nullptr, *nkp; - size_t len = 0; - int error; - int ctl[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID | KERN_PROC_INC_THREAD, (int)pid}; + struct kinfo_proc *kp = nullptr, *nkp; + size_t len = 0; + int error; + int ctl[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID | KERN_PROC_INC_THREAD, + (int)pid}; - while (1) - { - error = sysctl(ctl, 4, kp, &len, nullptr, 0); - if (kp == nullptr || (error != 0 && errno == ENOMEM)) - { - // Add extra space in case threads are added before next call. - len += sizeof(*kp) + len / 10; - nkp = (struct kinfo_proc *)realloc(kp, len); - if (nkp == nullptr) - { - free(kp); - return; - } - kp = nkp; - continue; - } - if (error != 0) - len = 0; - break; + while (1) { + error = sysctl(ctl, 4, kp, &len, nullptr, 0); + if (kp == nullptr || (error != 0 && errno == ENOMEM)) { + // Add extra space in case threads are added before next call. + len += sizeof(*kp) + len / 10; + nkp = (struct kinfo_proc *)realloc(kp, len); + if (nkp == nullptr) { + free(kp); + return; + } + kp = nkp; + continue; } + if (error != 0) + len = 0; + break; + } - for (size_t i = 0; i < len / sizeof(*kp); i++) - { - if (kp[i].ki_tid == (lwpid_t)tid) - { - name.append(kp[i].ki_tdname, kp[i].ki_tdname + strlen(kp[i].ki_tdname)); - break; - } + for (size_t i = 0; i < len / sizeof(*kp); i++) { + if (kp[i].ki_tid == (lwpid_t)tid) { + name.append(kp[i].ki_tdname, kp[i].ki_tdname + strlen(kp[i].ki_tdname)); + break; } - free(kp); + } + free(kp); } |