blob: d9e60167e8680455195bfc50e49f3fe527e47299 [file] [log] [blame]
Jim Flynn1fdeb992020-07-09 07:28:37 +01001//
2// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
Jim Flynn9c85b412022-03-16 00:27:43 +00006#include "Threads.hpp"
Jim Flynn1fdeb992020-07-09 07:28:37 +01007
8#if defined(__linux__)
9#include <unistd.h>
10#include <sys/syscall.h>
11#define gettid() syscall(SYS_gettid)
12#elif defined(_MSC_VER)
Rob Hughes35c31c02020-08-17 15:47:20 +010013#include <common/include/WindowsWrapper.hpp>
Jim Flynn82262f52020-07-16 11:23:45 +010014#elif defined(__APPLE__)
15#include "AvailabilityMacros.h"
Keith Moka20b3122020-12-20 00:05:14 -080016#include <pthread.h>
Jim Flynn82262f52020-07-16 11:23:45 +010017#include <sys/syscall.h>
18#include <sys/time.h>
19#include <unistd.h>
Jim Flynn1fdeb992020-07-09 07:28:37 +010020#endif
21
Jim Flynn9c85b412022-03-16 00:27:43 +000022namespace arm
Jim Flynn1fdeb992020-07-09 07:28:37 +010023{
Jim Flynn9c85b412022-03-16 00:27:43 +000024namespace pipe
Jim Flynn1fdeb992020-07-09 07:28:37 +010025{
26
27int GetCurrentThreadId()
28{
Jim Flynne195a042022-04-12 17:19:28 +010029#if !defined(ARMNN_DISABLE_THREADS)
Jim Flynn1fdeb992020-07-09 07:28:37 +010030#if defined(__linux__)
31 return static_cast<int>(gettid());
32#elif defined(_MSC_VER)
33 return ::GetCurrentThreadId();
Jim Flynn82262f52020-07-16 11:23:45 +010034#elif defined(__APPLE__)
35 uint64_t threadId;
36 int iRet = pthread_threadid_np(NULL, &threadId);
37 if (iRet != 0)
38 {
39 return 0;
40 }
Keith Moka20b3122020-12-20 00:05:14 -080041 return static_cast<int>(threadId);
Jim Flynn1fdeb992020-07-09 07:28:37 +010042#endif
Jim Flynne195a042022-04-12 17:19:28 +010043#else
44 return 0;
45#endif
Jim Flynn1fdeb992020-07-09 07:28:37 +010046}
47
Jim Flynn9c85b412022-03-16 00:27:43 +000048} // namespace pipe
49} // namespace arm