truebrain@9857: /* $Id$ */ truebrain@9857: truebrain@9857: /** @file thread_os2.cpp OS2 implementation of Threads. */ truebrain@9857: truebrain@9857: #include "stdafx.h" truebrain@9857: #include "thread.h" rubidium@10172: rubidium@10172: #if 0 truebrain@9857: #include "debug.h" truebrain@9857: #include "core/alloc_func.hpp" truebrain@9857: #include truebrain@9857: truebrain@9857: #define INCL_DOS truebrain@9857: #include truebrain@9857: #include truebrain@9857: truebrain@9857: struct OTTDThread { truebrain@9857: TID thread; truebrain@9857: OTTDThreadFunc func; truebrain@9857: void *arg; truebrain@9857: void *ret; truebrain@9857: }; truebrain@9857: truebrain@9857: static void Proxy(void *arg) truebrain@9857: { truebrain@9857: OTTDThread *t = (OTTDThread *)arg; truebrain@9857: t->ret = t->func(t->arg); truebrain@9857: } truebrain@9857: truebrain@9857: OTTDThread *OTTDCreateThread(OTTDThreadFunc function, void *arg) truebrain@9857: { truebrain@9857: OTTDThread *t = MallocT(1); truebrain@9857: truebrain@9857: t->func = function; truebrain@9857: t->arg = arg; truebrain@9857: t->thread = _beginthread(Proxy, NULL, 32768, t); truebrain@9857: if (t->thread != (TID)-1) { truebrain@9857: return t; truebrain@9857: } else { truebrain@9857: free(t); truebrain@9857: return NULL; truebrain@9857: } truebrain@9857: } truebrain@9857: truebrain@9857: void *OTTDJoinThread(OTTDThread *t) truebrain@9857: { truebrain@9857: if (t == NULL) return NULL; truebrain@9857: truebrain@9857: DosWaitThread(&t->thread, DCWW_WAIT); rubidium@10171: void *ret = t->ret; truebrain@9857: free(t); truebrain@9857: return ret; truebrain@9857: } truebrain@9857: truebrain@9857: void OTTDExitThread() truebrain@9857: { truebrain@9857: _endthread(); truebrain@9857: } rubidium@10172: rubidium@10172: #endif rubidium@10172: rubidium@10172: /* static */ ThreadObject *ThreadObject::New(OTTDThreadFunc proc, void *param) rubidium@10172: { rubidium@10172: return NULL; rubidium@10172: } rubidium@10172: rubidium@10172: /* static */ ThreadObject *ThreadObject::AttachCurrent() rubidium@10172: { rubidium@10172: return NULL; rubidium@10172: } rubidium@10172: rubidium@10172: /* static */ uint ThreadObject::CurrentId() rubidium@10172: { rubidium@10172: return -1; rubidium@10172: } rubidium@10172: rubidium@10172: /* static */ ThreadSemaphore *ThreadSemaphore::New() rubidium@10172: { rubidium@10172: return NULL; rubidium@10172: }