aboutsummaryrefslogtreecommitdiff
path: root/libjava/include
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/include')
-rw-r--r--libjava/include/no-threads.h5
-rw-r--r--libjava/include/posix-threads.h9
-rw-r--r--libjava/include/win32-threads.h6
3 files changed, 14 insertions, 6 deletions
diff --git a/libjava/include/no-threads.h b/libjava/include/no-threads.h
index 1cd2471..793cfad 100644
--- a/libjava/include/no-threads.h
+++ b/libjava/include/no-threads.h
@@ -75,6 +75,11 @@ _Jv_CondNotifyAll (_Jv_ConditionVariable_t *, _Jv_Mutex_t *)
// Mutexes.
//
+inline int _Jv_MutexCheckMonitor (_Jv_Mutex_t *mu)
+{
+ return 0;
+}
+
inline void
_Jv_MutexInit (_Jv_Mutex_t *)
{
diff --git a/libjava/include/posix-threads.h b/libjava/include/posix-threads.h
index 6c8dcec..01606df 100644
--- a/libjava/include/posix-threads.h
+++ b/libjava/include/posix-threads.h
@@ -77,12 +77,9 @@ typedef struct
// this out. Returns 0 if the lock is held by the current thread, and
// 1 otherwise.
inline int
-_Jv_PthreadCheckMonitor (_Jv_Mutex_t *mu)
+_Jv_MutexCheckMonitor (_Jv_Mutex_t *mu)
{
- pthread_t self = pthread_self();
- if (mu->owner == self)
- return 0;
- else return 1;
+ return (mu->owner != pthread_self());
}
//
@@ -155,7 +152,7 @@ _Jv_MutexLock (_Jv_Mutex_t *mu)
inline int
_Jv_MutexUnlock (_Jv_Mutex_t *mu)
{
- if (_Jv_PthreadCheckMonitor (mu))
+ if (_Jv_MutexCheckMonitor (mu))
{
# ifdef LOCK_DEBUG
fprintf(stderr, "_Jv_MutexUnlock: Not owner\n");
diff --git a/libjava/include/win32-threads.h b/libjava/include/win32-threads.h
index ed5eb00..fdd21c5 100644
--- a/libjava/include/win32-threads.h
+++ b/libjava/include/win32-threads.h
@@ -86,6 +86,12 @@ int _Jv_CondNotifyAll (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *);
// We use CRITICAL_SECTIONs instead of CreateMutex() for better performance
//
+// Returns 0 if the mutex lock is held by the current thread, and 1 otherwise.
+inline int _Jv_MutexCheckMonitor (_Jv_Mutex_t *mu)
+{
+ return (mu->owner != GetCurrentThreadId ( ));
+}
+
inline void _Jv_MutexInit (_Jv_Mutex_t *mu)
{
mu->owner = 0UL;