X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Tools%2Fnativelib%2Fthreads.c;h=f80447334fcc89e47d5d7332c2d1e3c526600c40;hb=13078002b01ee4f63eb2001d2ef479a2a006ea32;hp=cc508fbf280a697bc53f437585753cdd17daa356;hpb=50a98c40481c6d1df267f4631228e9a4d107fe74;p=tpg%2Facess2.git diff --git a/Tools/nativelib/threads.c b/Tools/nativelib/threads.c index cc508fbf..f8044733 100644 --- a/Tools/nativelib/threads.c +++ b/Tools/nativelib/threads.c @@ -5,6 +5,7 @@ * threads.c * - Threads handling */ +#define DEBUG 0 #include #include #include @@ -39,9 +40,12 @@ tGID Threads_GetGID(void) { return 0; } tTID Threads_GetTID(void) { return lpThreads_This ? lpThreads_This->TID : 0; } -int *Threads_GetMaxFD(void) { return &lpThreads_This->Process->MaxFDs; } -char **Threads_GetCWD(void) { return &lpThreads_This->Process->CWD; } -char **Threads_GetChroot(void) { return &lpThreads_This->Process->Chroot; } +static inline tProcess* getproc(tProcess *Process) { + return (Process ? Process : lpThreads_This->Process); +} +int *Threads_GetMaxFD(tProcess *Process) { return &getproc(Process)->MaxFDs; } +char **Threads_GetCWD(tProcess *Process) { return &getproc(Process)->CWD; } +char **Threads_GetChroot(tProcess *Process) { return &getproc(Process)->Chroot; } void **Threads_GetHandlesPtr(void) { return &lpThreads_This->Process->Handles; } void Threads_Yield(void) @@ -84,6 +88,7 @@ void Threads_AddActive(tThread *Thread) { Thread->Status = THREAD_STAT_ACTIVE; // Increment state-change semaphore + LOG("Waking %p(%i %s)", Thread, Thread->TID, Thread->ThreadName); Threads_int_SemSignal(Thread->WaitSemaphore); } @@ -149,6 +154,7 @@ void Threads_int_WaitForStatusEnd(enum eThreadStatus Status) Log_Warning("Threads", "Thread %p(%i %s) rescheduled while in %s state", us, us->TID, us->ThreadName, casTHREAD_STAT[Status]); } + LOG("%p(%i %s) Awake", us, us->TID, us->ThreadName); } int Threads_int_Sleep(enum eThreadStatus Status, void *Ptr, int Num, tThread **ListHead, tThread **ListTail, tShortSpinlock *Lock)