mirror of
https://github.com/wolfpld/tracy.git
synced 2024-11-30 01:04:36 +00:00
Move GetThreadHandleImpl() from header to source file.
This removes dependency on unistd.h header (required for syscall() on linux), which includes a definition of getopt(), which may conflict with a custom getopt implementation (for example, one that does work on windows).
This commit is contained in:
parent
bfdebc5775
commit
0d2e7f72a7
@ -18,10 +18,16 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
# ifndef __ANDROID__
|
# ifdef __ANDROID__
|
||||||
# include <syscall.h>
|
# include <sys/types.h>
|
||||||
|
# else
|
||||||
|
# include <sys/syscall.h>
|
||||||
# endif
|
# endif
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
|
#elif defined __FreeBSD__
|
||||||
|
# include <sys/thr.h>
|
||||||
|
#elif defined __NetBSD__ || defined __DragonFly__
|
||||||
|
# include <sys/lwp.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __MINGW32__
|
#ifdef __MINGW32__
|
||||||
@ -41,6 +47,41 @@
|
|||||||
namespace tracy
|
namespace tracy
|
||||||
{
|
{
|
||||||
|
|
||||||
|
namespace detail
|
||||||
|
{
|
||||||
|
|
||||||
|
TRACY_API uint64_t GetThreadHandleImpl()
|
||||||
|
{
|
||||||
|
#if defined _WIN32 || defined __CYGWIN__
|
||||||
|
static_assert( sizeof( decltype( GetCurrentThreadId() ) ) <= sizeof( uint64_t ), "Thread handle too big to fit in protocol" );
|
||||||
|
return uint64_t( GetCurrentThreadId() );
|
||||||
|
#elif defined __APPLE__
|
||||||
|
uint64_t id;
|
||||||
|
pthread_threadid_np( pthread_self(), &id );
|
||||||
|
return id;
|
||||||
|
#elif defined __ANDROID__
|
||||||
|
return (uint64_t)gettid();
|
||||||
|
#elif defined __linux__
|
||||||
|
return (uint64_t)syscall( SYS_gettid );
|
||||||
|
#elif defined __FreeBSD__
|
||||||
|
long id;
|
||||||
|
thr_self( &id );
|
||||||
|
return id;
|
||||||
|
#elif defined __NetBSD__
|
||||||
|
return _lwp_self();
|
||||||
|
#elif defined __DragonFly__
|
||||||
|
return lwp_gettid();
|
||||||
|
#elif defined __OpenBSD__
|
||||||
|
return getthrid();
|
||||||
|
#else
|
||||||
|
static_assert( sizeof( decltype( pthread_self() ) ) <= sizeof( uint64_t ), "Thread handle too big to fit in protocol" );
|
||||||
|
return uint64_t( pthread_self() );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef TRACY_ENABLE
|
#ifdef TRACY_ENABLE
|
||||||
struct ThreadNameData
|
struct ThreadNameData
|
||||||
{
|
{
|
||||||
|
@ -1,29 +1,6 @@
|
|||||||
#ifndef __TRACYSYSTEM_HPP__
|
#ifndef __TRACYSYSTEM_HPP__
|
||||||
#define __TRACYSYSTEM_HPP__
|
#define __TRACYSYSTEM_HPP__
|
||||||
|
|
||||||
#if defined _WIN32 || defined __CYGWIN__
|
|
||||||
# ifndef _WINDOWS_
|
|
||||||
extern "C" __declspec(dllimport) unsigned long __stdcall GetCurrentThreadId(void);
|
|
||||||
# endif
|
|
||||||
#elif defined __APPLE__ || ( !defined __ANDROID__ && !defined __linux__ )
|
|
||||||
# include <pthread.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
# include <unistd.h>
|
|
||||||
# ifdef __ANDROID__
|
|
||||||
# include <sys/types.h>
|
|
||||||
# else
|
|
||||||
# include <sys/syscall.h>
|
|
||||||
# endif
|
|
||||||
#elif defined __FreeBSD__
|
|
||||||
# include <sys/thr.h>
|
|
||||||
#elif defined __NetBSD__ || defined __DragonFly__
|
|
||||||
# include <sys/lwp.h>
|
|
||||||
#elif defined __OpenBSD__
|
|
||||||
# include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "TracyApi.h"
|
#include "TracyApi.h"
|
||||||
@ -33,34 +10,7 @@ namespace tracy
|
|||||||
|
|
||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
static inline uint64_t GetThreadHandleImpl()
|
TRACY_API uint64_t GetThreadHandleImpl();
|
||||||
{
|
|
||||||
#if defined _WIN32 || defined __CYGWIN__
|
|
||||||
static_assert( sizeof( decltype( GetCurrentThreadId() ) ) <= sizeof( uint64_t ), "Thread handle too big to fit in protocol" );
|
|
||||||
return uint64_t( GetCurrentThreadId() );
|
|
||||||
#elif defined __APPLE__
|
|
||||||
uint64_t id;
|
|
||||||
pthread_threadid_np( pthread_self(), &id );
|
|
||||||
return id;
|
|
||||||
#elif defined __ANDROID__
|
|
||||||
return (uint64_t)gettid();
|
|
||||||
#elif defined __linux__
|
|
||||||
return (uint64_t)syscall( SYS_gettid );
|
|
||||||
#elif defined __FreeBSD__
|
|
||||||
long id;
|
|
||||||
thr_self( &id );
|
|
||||||
return id;
|
|
||||||
#elif defined __NetBSD__
|
|
||||||
return _lwp_self();
|
|
||||||
#elif defined __DragonFly__
|
|
||||||
return lwp_gettid();
|
|
||||||
#elif defined __OpenBSD__
|
|
||||||
return getthrid();
|
|
||||||
#else
|
|
||||||
static_assert( sizeof( decltype( pthread_self() ) ) <= sizeof( uint64_t ), "Thread handle too big to fit in protocol" );
|
|
||||||
return uint64_t( pthread_self() );
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TRACY_ENABLE
|
#ifdef TRACY_ENABLE
|
||||||
|
Loading…
Reference in New Issue
Block a user