TASK_DLLEXPORT TaskMessage * Task_peekMessage(void) { pth_t ptask; Task *task; pth_msgport_t selfPort = NULL; char msgPortName[10]; #ifdef _LDEBUG printf("F=%s,L=%d\n", __FILE__, __LINE__); #endif if (!pth_inited) return NULL; ptask = pth_self(); task = seach_task_in_list(&Tasks, ptask); if (task == NULL) return NULL; snprintf(msgPortName, 10, "%ld", task->id); selfPort = pth_msgport_find(msgPortName); if (selfPort == NULL) return NULL; if (pth_msgport_pending(selfPort)) return Task_getMessage(); Task_yield(); #ifdef _LDEBUG printf("F=%s,L=%d\n", __FILE__, __LINE__); #endif return NULL; }
static int tid_log_callback (unsigned long *rvalue) { #ifdef PTH_HAVE_PTH_THREAD_ID *rvalue = pth_thread_id (); #else *rvalue = (unsigned long)pth_self (); #endif return 2; /* Use use hex representation. */ }
/* Obtain the current thread id */ TSRM_API THREAD_T tsrm_thread_id(void) {/*{{{*/ #ifdef TSRM_WIN32 return GetCurrentThreadId(); #elif defined(GNUPTH) return pth_self(); #elif defined(PTHREADS) return pthread_self(); #elif defined(TSRM_ST) return st_thread_self(); #endif }/*}}}*/
/* Obtain the current thread id */ TSRM_API THREAD_T tsrm_thread_id(void) { #ifdef TSRM_WIN32 return GetCurrentThreadId(); #elif defined(GNUPTH) return pth_self(); #elif defined(PTHREADS) return pthread_self(); #elif defined(NSAPI) return systhread_current(); #elif defined(PI3WEB) return PIThread_getCurrent(); #elif defined(TSRM_ST) return st_thread_self(); #elif defined(BETHREADS) return find_thread(NULL); #endif }
TASK_DLLEXPORT void Task_STOP() { #ifdef _LDEBUG printf("F=%s,L=%d\n", __FILE__, __LINE__); #endif if (!stopcount) { if (pth_inited) { pth_t ptask; ptask = pth_self(); task_pth_stop(&Tasks, ptask); } Task_stop_sheduler(); } ++stopcount; #ifdef _LDEBUG printf("F=%s,L=%d\n", __FILE__, __LINE__); #endif }
/* WARNING: This may not work for systems with 64-bit pid_t */ Uint32 SDL_ThreadID(void) { return((Uint32)pth_self()); }
ldap_pvt_thread_t ldap_pvt_thread_self( void ) { return pth_self(); }
task_pid_t task_getpid (void) { return pth_self (); }
bool Thread::isRunning () { return tid == pth_self(); }
static int fixed_gcry_pth_init (void) { return pth_self ()? 0 : (pth_init () == FALSE) ? errno : 0; }
uintptr_t ath_self (void) { return (uintptr_t) pth_self (); }
FrSimThread* FrSimThread::getSelf() { // std::cout << "FrSimThread::getSelf" << std::endl; selfId.id = pth_self(); return FrSimThreadTracker::getThreadTracker()->getThread(&selfId); }