/** * Wrapper which unpacks the params and calls thread function. */ static void rtThreadNativeMain(void *pvArgs) { /* * Block SIGALRM - required for timer-posix.cpp. * This is done to limit harm done by OSes which doesn't do special SIGALRM scheduling. * It will not help much if someone creates threads directly using pthread_create. :/ */ sigset_t SigSet; sigemptyset(&SigSet); sigaddset(&SigSet, SIGALRM); sigprocmask(SIG_BLOCK, &SigSet, NULL); /* * Call common main. */ PRTTHREADINT pThread = (PRTTHREADINT)pvArgs; *g_ppCurThread = pThread; #ifdef fibGetTidPid rtThreadMain(pThread, fibGetTidPid(), &pThread->szName[0]); #else rtThreadMain(pThread, _gettid(), &pThread->szName[0]); #endif *g_ppCurThread = NULL; _endthread(); }
RTDECL(RTNATIVETHREAD) RTThreadNativeSelf(void) { #ifdef fibGetTidPid return fibGetTidPid(); #else return _gettid(); #endif }
/** * Wrapper which unpacks the params and calls thread function. */ static void rtThreadNativeMain(void *pvArgs) { rtThreadOs2BlockSigAlarm(); /* * Call common main. */ PRTTHREADINT pThread = (PRTTHREADINT)pvArgs; *g_ppCurThread = pThread; #ifdef fibGetTidPid rtThreadMain(pThread, fibGetTidPid(), &pThread->szName[0]); #else rtThreadMain(pThread, _gettid(), &pThread->szName[0]); #endif *g_ppCurThread = NULL; _endthread(); }