summaryrefslogtreecommitdiff
path: root/src/jthread/win32
diff options
context:
space:
mode:
Diffstat (limited to 'src/jthread/win32')
-rw-r--r--src/jthread/win32/jevent.cpp43
-rw-r--r--src/jthread/win32/jmutex.cpp68
-rw-r--r--src/jthread/win32/jsemaphore.cpp104
-rwxr-xr-xsrc/jthread/win32/jthread.cpp146
4 files changed, 0 insertions, 361 deletions
diff --git a/src/jthread/win32/jevent.cpp b/src/jthread/win32/jevent.cpp
deleted file mode 100644
index 67b468f01..000000000
--- a/src/jthread/win32/jevent.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-
- This file is a part of the JThread package, which contains some object-
- oriented thread wrappers for different thread implementations.
-
- Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
-
-*/
-#include "jthread/jevent.h"
-
-Event::Event() {
- hEvent = CreateEvent(NULL, 0, 0, NULL);
-}
-
-Event::~Event() {
- CloseHandle(hEvent);
-}
-
-void Event::wait() {
- WaitForSingleObject(hEvent, INFINITE);
-}
-
-void Event::signal() {
- SetEvent(hEvent);
-}
diff --git a/src/jthread/win32/jmutex.cpp b/src/jthread/win32/jmutex.cpp
deleted file mode 100644
index b9f5e0e73..000000000
--- a/src/jthread/win32/jmutex.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-
- This file is a part of the JThread package, which contains some object-
- oriented thread wrappers for different thread implementations.
-
- Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
-
-*/
-#include <assert.h>
-#include "jthread/jmutex.h"
-
-JMutex::JMutex()
-{
-#ifdef JMUTEX_CRITICALSECTION
- InitializeCriticalSection(&mutex);
-#else
- mutex = CreateMutex(NULL,FALSE,NULL);
- assert(mutex != NULL);
-#endif // JMUTEX_CRITICALSECTION
-}
-
-JMutex::~JMutex()
-{
-#ifdef JMUTEX_CRITICALSECTION
- DeleteCriticalSection(&mutex);
-#else
- CloseHandle(mutex);
-#endif // JMUTEX_CRITICALSECTION
-}
-
-int JMutex::Lock()
-{
-#ifdef JMUTEX_CRITICALSECTION
- EnterCriticalSection(&mutex);
-#else
- WaitForSingleObject(mutex,INFINITE);
-#endif // JMUTEX_CRITICALSECTION
- return 0;
-}
-
-int JMutex::Unlock()
-{
-#ifdef JMUTEX_CRITICALSECTION
- LeaveCriticalSection(&mutex);
-#else
- ReleaseMutex(mutex);
-#endif // JMUTEX_CRITICALSECTION
- return 0;
-}
-
diff --git a/src/jthread/win32/jsemaphore.cpp b/src/jthread/win32/jsemaphore.cpp
deleted file mode 100644
index 27a11e819..000000000
--- a/src/jthread/win32/jsemaphore.cpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-Minetest
-Copyright (C) 2013 sapier, < sapier AT gmx DOT net >
-
-This program 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 program 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 program; if not, write to the Free Software Foundation, Inc.,
-51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-*/
-#include "jthread/jsemaphore.h"
-
-JSemaphore::JSemaphore() {
- m_hSemaphore = CreateSemaphore(
- 0,
- 0,
- MAX_SEMAPHORE_COUNT,
- 0);
-}
-
-JSemaphore::~JSemaphore() {
- CloseHandle(m_hSemaphore);
-}
-
-JSemaphore::JSemaphore(int initval) {
- m_hSemaphore = CreateSemaphore(
- 0,
- initval,
- MAX_SEMAPHORE_COUNT,
- 0);
-}
-
-void JSemaphore::Post() {
- ReleaseSemaphore(
- m_hSemaphore,
- 1,
- 0);
-}
-
-void JSemaphore::Wait() {
- WaitForSingleObject(
- m_hSemaphore,
- INFINITE);
-}
-
-bool JSemaphore::Wait(unsigned int time_ms) {
- unsigned int retval = WaitForSingleObject(
- m_hSemaphore,
- time_ms);
-
- if (retval == WAIT_OBJECT_0)
- {
- return true;
- }
- else {
- assert(retval == WAIT_TIMEOUT);
- return false;
- }
-}
-
-typedef LONG (NTAPI *_NtQuerySemaphore)(
- HANDLE SemaphoreHandle,
- DWORD SemaphoreInformationClass,
- PVOID SemaphoreInformation,
- ULONG SemaphoreInformationLength,
- PULONG ReturnLength OPTIONAL
-);
-
-typedef struct _SEMAPHORE_BASIC_INFORMATION {
- ULONG CurrentCount;
- ULONG MaximumCount;
-} SEMAPHORE_BASIC_INFORMATION;
-
-/* Note: this will only work as long as jthread is directly linked to application */
-/* it's gonna fail if someone tries to build jthread as dll */
-static _NtQuerySemaphore NtQuerySemaphore =
- (_NtQuerySemaphore)
- GetProcAddress
- (GetModuleHandle ("ntdll.dll"), "NtQuerySemaphore");
-
-int JSemaphore::GetValue() {
- SEMAPHORE_BASIC_INFORMATION BasicInfo;
- LONG retval;
-
- assert(NtQuerySemaphore);
-
- retval = NtQuerySemaphore (m_hSemaphore, 0,
- &BasicInfo, sizeof (SEMAPHORE_BASIC_INFORMATION), NULL);
-
- if (retval == ERROR_SUCCESS)
- return BasicInfo.CurrentCount;
-
- assert("unable to read semaphore count" == 0);
- return 0;
-}
-
diff --git a/src/jthread/win32/jthread.cpp b/src/jthread/win32/jthread.cpp
deleted file mode 100755
index b523d664c..000000000
--- a/src/jthread/win32/jthread.cpp
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
-
- This file is a part of the JThread package, which contains some object-
- oriented thread wrappers for different thread implementations.
-
- Copyright (c) 2000-2006 Jori Liesenborgs (jori.liesenborgs@gmail.com)
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
-
-*/
-
-#include "jthread/jthread.h"
-#include <assert.h>
-#define UNUSED(expr) do { (void)(expr); } while (0)
-#ifndef _WIN32_WCE
- #include <process.h>
-#endif // _WIN32_WCE
-
-JThread::JThread()
-{
- retval = NULL;
- requeststop = false;
- running = false;
-}
-
-JThread::~JThread()
-{
- Kill();
-}
-
-void JThread::Wait() {
- if (running)
- {
- WaitForSingleObject(threadhandle, INFINITE);
- }
-}
-
-int JThread::Start()
-{
- if (running)
- {
- return ERR_JTHREAD_ALREADYRUNNING;
- }
- requeststop = false;
-
- continuemutex.Lock();
-#ifndef _WIN32_WCE
- threadhandle = (HANDLE)_beginthreadex(NULL,0,TheThread,this,0,&threadid);
-#else
- threadhandle = CreateThread(NULL,0,TheThread,this,0,&threadid);
-#endif // _WIN32_WCE
- if (threadhandle == NULL)
- {
- continuemutex.Unlock();
- return ERR_JTHREAD_CANTSTARTTHREAD;
- }
-
- /* Wait until 'running' is set */
- while (!running)
- {
- Sleep(1);
- }
-
- continuemutex.Unlock();
-
- continuemutex2.Lock();
- continuemutex2.Unlock();
-
- return 0;
-}
-
-int JThread::Kill()
-{
- if (!running)
- {
- return ERR_JTHREAD_NOTRUNNING;
- }
- TerminateThread(threadhandle,0);
- CloseHandle(threadhandle);
- running = false;
- return 0;
-}
-
-void *JThread::GetReturnValue()
-{
- void *val;
-
- if (running) {
- val = NULL;
- } else {
- val = retval;
- }
- return val;
-}
-
-bool JThread::IsSameThread()
-{
- return GetCurrentThreadId() == threadid;
-}
-
-#ifndef _WIN32_WCE
-UINT __stdcall JThread::TheThread(void *param)
-#else
-DWORD WINAPI JThread::TheThread(void *param)
-#endif // _WIN32_WCE
-{
- JThread *jthread;
- void *ret;
-
- jthread = (JThread *)param;
-
- jthread->continuemutex2.Lock();
- jthread->running = true;
-
- jthread->continuemutex.Lock();
- jthread->continuemutex.Unlock();
-
- ret = jthread->Thread();
-
- jthread->running = false;
- jthread->retval = ret;
- CloseHandle(jthread->threadhandle);
- return 0;
-}
-
-void JThread::ThreadStarted()
-{
- continuemutex2.Unlock();
-}
-