Commit 40219f96 by Wu Yongwei Committed by Danny Smith

gthr-win32.h (__gthread_recursive_mutex_t): Use 'unsigned long', not Windows 'DWORD'.

	* 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.

Co-Authored-By: Danny Smith <dannysmith@users.sourceforge.net>

From-SVN: r86939
parent ba2e294d
2004-09-01 Wu Yongwei <adah@sh163.net>
Danny Smith <dannysmith@users.sourceforge.net>
* 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.
2004-09-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> 2004-09-01 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* tree-tailcall.c (find_tail_calls): Also fail is statement has * tree-tailcall.c (find_tail_calls): Also fail is statement has
......
...@@ -203,7 +203,7 @@ __gthr_win32_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex) ...@@ -203,7 +203,7 @@ __gthr_win32_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
} }
else if (mutex->owner == me) else if (mutex->owner == me)
{ {
InterlockedDecrement (&mx->lock_idx); InterlockedDecrement (&mutex->counter);
++(mutex->depth); ++(mutex->depth);
} }
else if (WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0) else if (WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0)
......
...@@ -346,15 +346,16 @@ typedef struct { ...@@ -346,15 +346,16 @@ typedef struct {
typedef struct { typedef struct {
long counter; long counter;
long depth; long depth;
DWORD owner; unsigned long owner;
void *sema; void *sema;
} __gthread_recursive_mutex_t; } __gthread_recursive_mutex_t;
#define __GTHREAD_ONCE_INIT {0, -1} #define __GTHREAD_ONCE_INIT {0, -1}
#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function #define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function
#define __GTHREAD_MUTEX_INIT_DEFAULT {-1, 0} #define __GTHREAD_MUTEX_INIT_DEFAULT {-1, 0}
#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_mutex_init_function #define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION \
#define __GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT {-1, 0} __gthread_recursive_mutex_init_function
#define __GTHREAD_RECURSIVE_MUTEX_INIT_DEFAULT {-1, 0, 0, 0}
#if __MINGW32_MAJOR_VERSION >= 1 || \ #if __MINGW32_MAJOR_VERSION >= 1 || \
(__MINGW32_MAJOR_VERSION == 0 && __MINGW32_MINOR_VERSION > 2) (__MINGW32_MAJOR_VERSION == 0 && __MINGW32_MINOR_VERSION > 2)
...@@ -414,6 +415,12 @@ extern void __gthr_win32_mutex_init_function (__gthread_mutex_t *); ...@@ -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_lock (__gthread_mutex_t *);
extern int __gthr_win32_mutex_trylock (__gthread_mutex_t *); extern int __gthr_win32_mutex_trylock (__gthread_mutex_t *);
extern int __gthr_win32_mutex_unlock (__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 static inline int
__gthread_once (__gthread_once_t *once, void (*func) (void)) __gthread_once (__gthread_once_t *once, void (*func) (void))
...@@ -481,6 +488,12 @@ __gthread_mutex_unlock (__gthread_mutex_t *mutex) ...@@ -481,6 +488,12 @@ __gthread_mutex_unlock (__gthread_mutex_t *mutex)
return 0; 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 static inline int
__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex) __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
{ {
...@@ -668,7 +681,7 @@ __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) else if (mutex->owner == me)
{ {
InterlockedDecrement (&mx->lock_idx); InterlockedDecrement (&mutex->counter);
++(mutex->depth); ++(mutex->depth);
} }
else if (WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0) else if (WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment