X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixthread.c;h=099d75d934865fc8846e2326482a7f232c8c1c3e;hb=40f8443d8d3a6577336ee66d18e04d9ac4d956bb;hp=7751603f61d68c11bbe62cbaa24253565f77015f;hpb=0a9eee0712fb83be3cd586c6b5b87821deaba702;p=silc.git diff --git a/lib/silcutil/unix/silcunixthread.c b/lib/silcutil/unix/silcunixthread.c index 7751603f..099d75d9 100644 --- a/lib/silcutil/unix/silcunixthread.c +++ b/lib/silcutil/unix/silcunixthread.c @@ -4,12 +4,11 @@ Author: Pekka Riikonen - Copyright (C) 2001 Pekka Riikonen + Copyright (C) 2001 - 2005 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. + the Free Software Foundation; version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,13 +18,12 @@ */ /* $Id$ */ -#include "silcincludes.h" - -#ifdef SILC_THREADS +#include "silc.h" SilcThread silc_thread_create(SilcThreadStart start_func, void *context, - bool waitable) + SilcBool waitable) { +#ifdef SILC_THREADS pthread_attr_t attr; pthread_t thread; int ret; @@ -61,25 +59,38 @@ SilcThread silc_thread_create(SilcThreadStart start_func, void *context, SILC_LOG_DEBUG(("Created thread %p", (SilcThread)thread)); return (SilcThread)thread; +#else + /* Call thread callback immediately */ + (*start_func)(context); + return NULL; +#endif } void silc_thread_exit(void *exit_value) { +#ifdef SILC_THREADS pthread_exit(exit_value); +#endif } SilcThread silc_thread_self(void) { +#ifdef SILC_THREADS pthread_t self = pthread_self(); return (SilcThread)self; +#else + return NULL; +#endif } -bool silc_thread_wait(SilcThread thread, void **exit_value) +SilcBool silc_thread_wait(SilcThread thread, void **exit_value) { +#ifdef SILC_THREADS SILC_LOG_DEBUG(("Waiting for thread %p", thread)); if (!pthread_join(*(pthread_t *)thread, exit_value)) return TRUE; return FALSE; +#else + return FALSE; +#endif } - -#endif /* SILC_THREADS */