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