diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/SDL.c | 13 | ||||
-rw-r--r-- | src/thread/SDL_thread_c.h | 2 | ||||
-rw-r--r-- | src/thread/pth/SDL_syscond.c | 173 | ||||
-rw-r--r-- | src/thread/pth/SDL_sysmutex.c | 93 | ||||
-rw-r--r-- | src/thread/pth/SDL_sysmutex_c.h | 33 | ||||
-rw-r--r-- | src/thread/pth/SDL_systhread.c | 103 | ||||
-rw-r--r-- | src/thread/pth/SDL_systhread_c.h | 32 | ||||
-rw-r--r-- | src/timer/unix/SDL_systimer.c | 11 |
8 files changed, 0 insertions, 460 deletions
@@ -31,10 +31,6 @@ #include "video/SDL_leaks.h" #endif -#if SDL_THREAD_PTH -#include <pth.h> -#endif - /* Initialization/Cleanup routines */ #if !SDL_JOYSTICK_DISABLED extern int SDL_JoystickInit(void); @@ -152,12 +148,6 @@ SDL_InitSubSystem(Uint32 flags) int SDL_Init(Uint32 flags) { -#if !SDL_THREADS_DISABLED && SDL_THREAD_PTH - if (!pth_init()) { - return -1; - } -#endif - if (SDL_AssertionsInit() < 0) { return -1; } @@ -266,9 +256,6 @@ SDL_Quit(void) SDL_AssertionsQuit(); -#if !SDL_THREADS_DISABLED && SDL_THREAD_PTH - pth_kill(); -#endif #ifdef DEBUG_BUILD printf("[SDL_Quit] : Returning!\n"); fflush(stdout); diff --git a/src/thread/SDL_thread_c.h b/src/thread/SDL_thread_c.h index 07b77d1a2a..1dde9cadc6 100644 --- a/src/thread/SDL_thread_c.h +++ b/src/thread/SDL_thread_c.h @@ -31,8 +31,6 @@ #include "beos/SDL_systhread_c.h" #elif SDL_THREAD_EPOC #include "epoc/SDL_systhread_c.h" -#elif SDL_THREAD_PTH -#include "pth/SDL_systhread_c.h" #elif SDL_THREAD_PTHREAD #include "pthread/SDL_systhread_c.h" #elif SDL_THREAD_SPROC diff --git a/src/thread/pth/SDL_syscond.c b/src/thread/pth/SDL_syscond.c deleted file mode 100644 index 4f4365c4ae..0000000000 --- a/src/thread/pth/SDL_syscond.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* - * GNU pth conditions variables - * - * Patrice Mandin - */ - -#include <pth.h> - -#include "SDL_thread.h" -#include "SDL_sysmutex_c.h" - -struct SDL_cond -{ - pth_cond_t condpth_p; -}; - -/* Create a condition variable */ -SDL_cond * -SDL_CreateCond(void) -{ - SDL_cond *cond; - - cond = (SDL_cond *) SDL_malloc(sizeof(SDL_cond)); - if (cond) { - if (pth_cond_init(&(cond->condpth_p)) < 0) { - SDL_SetError("pthread_cond_init() failed"); - SDL_free(cond); - cond = NULL; - } - } else { - SDL_OutOfMemory(); - } - return (cond); -} - -/* Destroy a condition variable */ -void -SDL_DestroyCond(SDL_cond * cond) -{ - if (cond) { - SDL_free(cond); - } -} - -/* Restart one of the threads that are waiting on the condition variable */ -int -SDL_CondSignal(SDL_cond * cond) -{ - int retval; - - if (!cond) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } - - retval = 0; - if (pth_cond_notify(&(cond->condpth_p), FALSE) != 0) { - SDL_SetError("pth_cond_notify() failed"); - retval = -1; - } - return retval; -} - -/* Restart all threads that are waiting on the condition variable */ -int -SDL_CondBroadcast(SDL_cond * cond) -{ - int retval; - - if (!cond) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } - - retval = 0; - if (pth_cond_notify(&(cond->condpth_p), TRUE) != 0) { - SDL_SetError("pth_cond_notify() failed"); - retval = -1; - } - return retval; -} - -/* Wait on the condition variable for at most 'ms' milliseconds. - The mutex must be locked before entering this function! - The mutex is unlocked during the wait, and locked again after the wait. - -Typical use: - -Thread A: - SDL_LockMutex(lock); - while ( ! condition ) { - SDL_CondWait(cond); - } - SDL_UnlockMutex(lock); - -Thread B: - SDL_LockMutex(lock); - ... - condition = true; - ... - SDL_UnlockMutex(lock); - */ -int -SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms) -{ - int retval; - pth_event_t ev; - int sec; - - if (!cond) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } - - retval = 0; - - sec = ms / 1000; - ev = pth_event(PTH_EVENT_TIME, - pth_timeout(sec, (ms - sec * 1000) * 1000)); - - if (pth_cond_await(&(cond->condpth_p), &(mutex->mutexpth_p), ev) != 0) { - SDL_SetError("pth_cond_await() failed"); - retval = -1; - } - - pth_event_free(ev, PTH_FREE_ALL); - - return retval; -} - -/* Wait on the condition variable forever */ -int -SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex) -{ - int retval; - - if (!cond) { - SDL_SetError("Passed a NULL condition variable"); - return -1; - } - - retval = 0; - if (pth_cond_await(&(cond->condpth_p), &(mutex->mutexpth_p), NULL) != 0) { - SDL_SetError("pth_cond_await() failed"); - retval = -1; - } - return retval; -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/pth/SDL_sysmutex.c b/src/thread/pth/SDL_sysmutex.c deleted file mode 100644 index 5ca1481130..0000000000 --- a/src/thread/pth/SDL_sysmutex.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* - * GNU pth mutexes - * - * Patrice Mandin - */ - -#include <pth.h> - -#include "SDL_mutex.h" -#include "SDL_sysmutex_c.h" - -/* Create a mutex */ -SDL_mutex * -SDL_CreateMutex(void) -{ - SDL_mutex *mutex; - - /* Allocate mutex memory */ - mutex = (SDL_mutex *) SDL_malloc(sizeof(*mutex)); - if (mutex) { - /* Create the mutex, with initial value signaled */ - if (!pth_mutex_init(&(mutex->mutexpth_p))) { - SDL_SetError("Couldn't create mutex"); - SDL_free(mutex); - mutex = NULL; - } - } else { - SDL_OutOfMemory(); - } - return (mutex); -} - -/* Free the mutex */ -void -SDL_DestroyMutex(SDL_mutex * mutex) -{ - if (mutex) { - SDL_free(mutex); - } -} - -/* Lock the mutex */ -int -SDL_mutexP(SDL_mutex * mutex) -{ - if (mutex == NULL) { - SDL_SetError("Passed a NULL mutex"); - return -1; - } - - pth_mutex_acquire(&(mutex->mutexpth_p), FALSE, NULL); - - return (0); -} - -/* Unlock the mutex */ -int -SDL_mutexV(SDL_mutex * mutex) -{ - if (mutex == NULL) { - SDL_SetError("Passed a NULL mutex"); - return -1; - } - - pth_mutex_release(&(mutex->mutexpth_p)); - - return (0); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/pth/SDL_sysmutex_c.h b/src/thread/pth/SDL_sysmutex_c.h deleted file mode 100644 index 0ca8197637..0000000000 --- a/src/thread/pth/SDL_sysmutex_c.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_SYSMUTEX_C_H_ -#define _SDL_SYSMUTEX_C_H_ - -struct SDL_mutex -{ - pth_mutex_t mutexpth_p; -}; - -#endif /* _SDL_SYSMUTEX_C_H_ */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/pth/SDL_systhread.c b/src/thread/pth/SDL_systhread.c deleted file mode 100644 index 90ab53fad5..0000000000 --- a/src/thread/pth/SDL_systhread.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -/* - * GNU pth threads - * - * Patrice Mandin - */ - -#include <pth.h> -#include <signal.h> - -#include "SDL_thread.h" -#include "../SDL_thread_c.h" -#include "../SDL_systhread.h" - -/* List of signals to mask in the subthreads */ -static int sig_list[] = { - SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGALRM, SIGTERM, SIGCHLD, SIGWINCH, - SIGVTALRM, SIGPROF, 0 -}; - -static void * -RunThread(void *data) -{ - SDL_RunThread(data); - pth_exit((void *) 0); - return ((void *) 0); /* Prevent compiler warning */ -} - -int -SDL_SYS_CreateThread(SDL_Thread * thread, void *args) -{ - pth_attr_t type; - - /* Create a new attribute */ - type = pth_attr_new(); - if (type == NULL) { - SDL_SetError("Couldn't initialize pth attributes"); - return (-1); - } - pth_attr_set(type, PTH_ATTR_JOINABLE, TRUE); - - /* Create the thread and go! */ - thread->handle = pth_spawn(type, RunThread, args); - if (thread->handle == NULL) { - SDL_SetError("Not enough resources to create thread"); - return (-1); - } - return (0); -} - -void -SDL_SYS_SetupThread(void) -{ - int i; - sigset_t mask; - int oldstate; - - /* Mask asynchronous signals for this thread */ - sigemptyset(&mask); - for (i = 0; sig_list[i]; ++i) { - sigaddset(&mask, sig_list[i]); - } - pth_sigmask(SIG_BLOCK, &mask, 0); - - /* Allow ourselves to be asynchronously cancelled */ - pth_cancel_state(PTH_CANCEL_ASYNCHRONOUS, &oldstate); -} - -SDL_threadID -SDL_ThreadID(void) -{ - return ((SDL_threadID) pth_self()); -} - -void -SDL_SYS_WaitThread(SDL_Thread * thread) -{ - pth_join(thread->handle, NULL); -} - -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/thread/pth/SDL_systhread_c.h b/src/thread/pth/SDL_systhread_c.h deleted file mode 100644 index 8b06ef2939..0000000000 --- a/src/thread/pth/SDL_systhread_c.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - Sam Lantinga - slouken@libsdl.org -*/ -#include "SDL_config.h" - -#ifndef _SDL_SYSTHREAD_C_H_ -#define _SDL_SYSTHREAD_C_H_ - -#include <pth.h> - -typedef pth_t SYS_ThreadHandle; - -#endif /* _SDL_SYSTHREAD_C_H_ */ -/* vi: set ts=4 sw=4 expandtab: */ diff --git a/src/timer/unix/SDL_systimer.c b/src/timer/unix/SDL_systimer.c index 3366dbd773..53d3197ba4 100644 --- a/src/timer/unix/SDL_systimer.c +++ b/src/timer/unix/SDL_systimer.c @@ -42,10 +42,6 @@ #include <time.h> #endif -#if SDL_THREAD_PTH -#include <pth.h> -#endif - #if SDL_THREADS_DISABLED #define USE_ITIMER #endif @@ -94,12 +90,6 @@ SDL_GetTicks(void) void SDL_Delay(Uint32 ms) { -#if SDL_THREAD_PTH - pth_time_t tv; - tv.tv_sec = ms / 1000; - tv.tv_usec = (ms % 1000) * 1000; - pth_nap(tv); -#else int was_error; #if HAVE_NANOSLEEP @@ -138,7 +128,6 @@ SDL_Delay(Uint32 ms) was_error = select(0, NULL, NULL, NULL, &tv); #endif /* HAVE_NANOSLEEP */ } while (was_error && (errno == EINTR)); -#endif /* SDL_THREAD_PTH */ } #ifdef USE_ITIMER |