summaryrefslogtreecommitdiff
path: root/gcc/gthr-win32.h
diff options
context:
space:
mode:
authordannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-01 23:18:54 +0000
committerdannysmith <dannysmith@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-01 23:18:54 +0000
commitcd98a805697edbf15079aa96e4eeb7c75841ed90 (patch)
treec0cf7a4d0974baae80291d2385965871d0eb1773 /gcc/gthr-win32.h
parent147b9f521ac0f57b49494b03d75b93a243dc24f1 (diff)
downloadgcc-cd98a805697edbf15079aa96e4eeb7c75841ed90.tar.gz
* gthr-win32.h (__gthread_recursive_mutex_t): Use 'unsigned long',
not Windows 'DWORD'. (__GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION): Correct typo. (__GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT): Likewise. (__gthr_win32_recursive_mutex_init_function): Add prototype for __GTHREAD_HIDE_WIN32API case.. (__gthr_win32_recursive_mutex_lock): Likewise. (__gthr_win32_recursive_mutex_trylock): Likewise. (__gthr_win32_recursive_mutex_unlock): Likewise. (__gthread_recursive_mutex_init_function); Add definition for __GTHREAD_HIDE_WIN32API case. (__gthread_recursive_mutex_lock): Correct call to InterlockedDecrement. * config/i386/grthr-win32.c (__gthread_recursive_mutex_lock): Correct call to InterlockedDecrement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86939 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gthr-win32.h')
-rw-r--r--gcc/gthr-win32.h21
1 files changed, 17 insertions, 4 deletions
diff --git a/gcc/gthr-win32.h b/gcc/gthr-win32.h
index 3e1aac7fce0..49ea54081c8 100644
--- a/gcc/gthr-win32.h
+++ b/gcc/gthr-win32.h
@@ -346,15 +346,16 @@ typedef struct {
typedef struct {
long counter;
long depth;
- DWORD owner;
+ unsigned long owner;
void *sema;
} __gthread_recursive_mutex_t;
#define __GTHREAD_ONCE_INIT {0, -1}
#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
#define __GTHREAD_MUTEX_INIT_DEFAULT {-1, 0}
-#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
-#define __GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT {-1, 0}
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION \
+ __gthread_recursive_mutex_init_function
+#define __GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT {-1, 0, 0, 0}
#if __MINGW32_MAJOR_VERSION >= 1 || \
(__MINGW32_MAJOR_VERSION == 0 && __MINGW32_MINOR_VERSION > 2)
@@ -414,6 +415,12 @@ extern void __gthr_win32_mutex_init_function (__gthread_mutex_t *);
extern int __gthr_win32_mutex_lock (__gthread_mutex_t *);
extern int __gthr_win32_mutex_trylock (__gthread_mutex_t *);
extern int __gthr_win32_mutex_unlock (__gthread_mutex_t *);
+extern void
+ __gthr_win32_recursive_mutex_init_function (__gthread_recursive_mutex_t *);
+extern int __gthr_win32_recursive_mutex_lock (__gthread_recursive_mutex_t *);
+extern int
+ __gthr_win32_recursive_mutex_trylock (__gthread_recursive_mutex_t *);
+extern int __gthr_win32_recursive_mutex_unlock (__gthread_recursive_mutex_t *);
static inline int
__gthread_once (__gthread_once_t *once, void (*func) (void))
@@ -481,6 +488,12 @@ __gthread_mutex_unlock (__gthread_mutex_t *mutex)
return 0;
}
+static inline void
+__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *mutex)
+{
+ __gthr_win32_recursive_mutex_init_function (mutex);
+}
+
static inline int
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
{
@@ -668,7 +681,7 @@ __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
}
else if (mutex->owner == me)
{
- InterlockedDecrement (&mx->lock_idx);
+ InterlockedDecrement (&mutex->counter);
++(mutex->depth);
}
else if (WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0)