1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #include "Threads.hpp" 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #if defined(__linux__) 9*89c4ff92SAndroid Build Coastguard Worker #include <unistd.h> 10*89c4ff92SAndroid Build Coastguard Worker #include <sys/syscall.h> 11*89c4ff92SAndroid Build Coastguard Worker #define gettid() syscall(SYS_gettid) 12*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) 13*89c4ff92SAndroid Build Coastguard Worker #include <common/include/WindowsWrapper.hpp> 14*89c4ff92SAndroid Build Coastguard Worker #elif defined(__APPLE__) 15*89c4ff92SAndroid Build Coastguard Worker #include "AvailabilityMacros.h" 16*89c4ff92SAndroid Build Coastguard Worker #include <pthread.h> 17*89c4ff92SAndroid Build Coastguard Worker #include <sys/syscall.h> 18*89c4ff92SAndroid Build Coastguard Worker #include <sys/time.h> 19*89c4ff92SAndroid Build Coastguard Worker #include <unistd.h> 20*89c4ff92SAndroid Build Coastguard Worker #endif 21*89c4ff92SAndroid Build Coastguard Worker 22*89c4ff92SAndroid Build Coastguard Worker namespace arm 23*89c4ff92SAndroid Build Coastguard Worker { 24*89c4ff92SAndroid Build Coastguard Worker namespace pipe 25*89c4ff92SAndroid Build Coastguard Worker { 26*89c4ff92SAndroid Build Coastguard Worker GetCurrentThreadId()27*89c4ff92SAndroid Build Coastguard Workerint GetCurrentThreadId() 28*89c4ff92SAndroid Build Coastguard Worker { 29*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_THREADS) 30*89c4ff92SAndroid Build Coastguard Worker #if defined(__linux__) 31*89c4ff92SAndroid Build Coastguard Worker return static_cast<int>(gettid()); 32*89c4ff92SAndroid Build Coastguard Worker #elif defined(_MSC_VER) 33*89c4ff92SAndroid Build Coastguard Worker return ::GetCurrentThreadId(); 34*89c4ff92SAndroid Build Coastguard Worker #elif defined(__APPLE__) 35*89c4ff92SAndroid Build Coastguard Worker uint64_t threadId; 36*89c4ff92SAndroid Build Coastguard Worker int iRet = pthread_threadid_np(NULL, &threadId); 37*89c4ff92SAndroid Build Coastguard Worker if (iRet != 0) 38*89c4ff92SAndroid Build Coastguard Worker { 39*89c4ff92SAndroid Build Coastguard Worker return 0; 40*89c4ff92SAndroid Build Coastguard Worker } 41*89c4ff92SAndroid Build Coastguard Worker return static_cast<int>(threadId); 42*89c4ff92SAndroid Build Coastguard Worker #endif 43*89c4ff92SAndroid Build Coastguard Worker #else 44*89c4ff92SAndroid Build Coastguard Worker return 0; 45*89c4ff92SAndroid Build Coastguard Worker #endif 46*89c4ff92SAndroid Build Coastguard Worker } 47*89c4ff92SAndroid Build Coastguard Worker 48*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 49*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 50