summaryrefslogtreecommitdiff
path: root/src/threadengines/threadengine_pthread.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2011-11-08 17:29:16 -0500
committerAdam <Adam@anope.org>2011-11-08 17:29:16 -0500
commitb5ff856f47d8e54d12c568462a06351633c29610 (patch)
treea4e2f96c59ee49aa5e6cacdfd30db6155151ad36 /src/threadengines/threadengine_pthread.cpp
parent97b9055f92f21cd91af44a3d5dacce0024536cff (diff)
Windows
Diffstat (limited to 'src/threadengines/threadengine_pthread.cpp')
-rw-r--r--src/threadengines/threadengine_pthread.cpp122
1 files changed, 0 insertions, 122 deletions
diff --git a/src/threadengines/threadengine_pthread.cpp b/src/threadengines/threadengine_pthread.cpp
deleted file mode 100644
index 987b8bc61..000000000
--- a/src/threadengines/threadengine_pthread.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-#include "services.h"
-
-static inline pthread_attr_t *get_engine_attr()
-{
- /* Threadengine attributes used by this thread engine */
- static pthread_attr_t attr;
- static bool inited = false;
-
- if (inited == false)
- {
- if (pthread_attr_init(&attr))
- throw CoreException("Error calling pthread_attr_init");
- if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE))
- throw CoreException("Unable to mark threads as joinable");
- inited = true;
- }
-
- return &attr;
-}
-
-/** Entry point used for the threads
- * @param parameter A Thread* cast to a void*
- */
-static void *entry_point(void *parameter)
-{
- Thread *thread = static_cast<Thread *>(parameter);
- thread->Run();
- thread->SetExitState();
- pthread_exit(0);
-}
-
-/** Join to the thread, sets the exit state to true
- */
-void Thread::Join()
-{
- this->SetExitState();
- pthread_join(Handle, NULL);
-}
-
-/** Exit the thread. Note that the thread still must be joined to free resources!
- */
-void Thread::Exit()
-{
- this->SetExitState();
- pthread_exit(0);
-}
-
-/** Launch the thread
- */
-void Thread::Start()
-{
- if (pthread_create(&this->Handle, get_engine_attr(), entry_point, this))
- {
- this->SetFlag(SF_DEAD);
- throw CoreException("Unable to create thread: " + Anope::LastError());
- }
-}
-
-/** Constructor
- */
-Mutex::Mutex()
-{
- pthread_mutex_init(&mutex, NULL);
-}
-
-/** Destructor
- */
-Mutex::~Mutex()
-{
- pthread_mutex_destroy(&mutex);
-}
-
-/** Attempt to lock the mutex, will hang until a lock can be achieved
- */
-void Mutex::Lock()
-{
- pthread_mutex_lock(&mutex);
-}
-
-/** Unlock the mutex, it must be locked first
- */
-void Mutex::Unlock()
-{
- pthread_mutex_unlock(&mutex);
-}
-
-/** Attempt to lock the mutex, will return true on success and false on fail
- * Does not block
- * @return true or false
- */
-bool Mutex::TryLock()
-{
- return pthread_mutex_trylock(&mutex) == 0;
-}
-
-/** Constructor
- */
-Condition::Condition() : Mutex()
-{
- pthread_cond_init(&cond, NULL);
-}
-
-/** Destructor
- */
-Condition::~Condition()
-{
- pthread_cond_destroy(&cond);
-}
-
-/** Called to wakeup the waiter
- */
-void Condition::Wakeup()
-{
- pthread_cond_signal(&cond);
-}
-
-/** Called to wait for a Wakeup() call
- */
-void Condition::Wait()
-{
- pthread_cond_wait(&cond, &mutex);
-}