1278332Semaste//===-- ThisThread.cpp ------------------------------------------*- C++ -*-===//
2278332Semaste//
3278332Semaste//                     The LLVM Compiler Infrastructure
4278332Semaste//
5278332Semaste// This file is distributed under the University of Illinois Open Source
6278332Semaste// License. See LICENSE.TXT for details.
7278332Semaste//
8278332Semaste//===----------------------------------------------------------------------===//
9278332Semaste
10278332Semaste#include "lldb/Host/HostNativeThread.h"
11278332Semaste#include "lldb/Host/ThisThread.h"
12278332Semaste
13278332Semaste#include "llvm/ADT/SmallVector.h"
14278332Semaste
15278332Semaste#include <pthread.h>
16288943Sdim#if defined (__FreeBSD__)
17278332Semaste#include <pthread_np.h>
18288943Sdim#endif
19278332Semaste
20278332Semasteusing namespace lldb_private;
21278332Semaste
22278332Semastevoid
23278332SemasteThisThread::SetName(llvm::StringRef name)
24278332Semaste{
25288943Sdim#if defined (__FreeBSD__) // Kfreebsd does not have a simple alternative
26278332Semaste    ::pthread_set_name_np(::pthread_self(), name.data());
27288943Sdim#endif
28278332Semaste}
29278332Semaste
30278332Semastevoid
31278332SemasteThisThread::GetName(llvm::SmallVectorImpl<char> &name)
32278332Semaste{
33288943Sdim#if defined (__FreeBSD__)
34278332Semaste    HostNativeThread::GetName(::pthread_getthreadid_np(), name);
35288943Sdim#else
36288943Sdim// Kfreebsd
37288943Sdim    HostNativeThread::GetName((unsigned)pthread_self(), name);
38288943Sdim#endif
39278332Semaste}
40