ruby-changes:24068
From: nobu <ko1@a...>
Date: Sun, 17 Jun 2012 16:21:18 +0900 (JST)
Subject: [ruby-changes:24068] nobu:r36119 (trunk): thread_win32.h: rb_thread_lock_t for USE_WIN32_MUTEX
nobu 2012-06-17 16:21:03 +0900 (Sun, 17 Jun 2012) New Revision: 36119 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=36119 Log: thread_win32.h: rb_thread_lock_t for USE_WIN32_MUTEX * thread_win32.h (rb_thread_lock_t): make a union for USE_WIN32_MUTEX. this internal is used only in thread_win32.c, but has to be complete to define rb_thread_t. Modified files: trunk/ChangeLog trunk/thread_win32.c trunk/thread_win32.h Index: thread_win32.c =================================================================== --- thread_win32.c (revision 36118) +++ thread_win32.c (revision 36119) @@ -340,9 +340,9 @@ native_mutex_lock(rb_thread_lock_t *lock) { #if USE_WIN32_MUTEX - w32_mutex_lock(*lock); + w32_mutex_lock(lock->mutex); #else - EnterCriticalSection(lock); + EnterCriticalSection(&lock->crit); #endif return 0; } @@ -351,10 +351,10 @@ native_mutex_unlock(rb_thread_lock_t *lock) { #if USE_WIN32_MUTEX - thread_debug("release mutex: %p\n", *lock); - return ReleaseMutex(*lock); + thread_debug("release mutex: %p\n", lock->mutex); + return ReleaseMutex(lock->mutex); #else - LeaveCriticalSection(lock); + LeaveCriticalSection(&lock->crit); return 0; #endif } @@ -364,8 +364,8 @@ { #if USE_WIN32_MUTEX int result; - thread_debug("native_mutex_trylock: %p\n", *lock); - result = w32_wait_events(&*lock, 1, 1, 0); + thread_debug("native_mutex_trylock: %p\n", lock->mutex); + result = w32_wait_events(&lock->mutex, 1, 1, 0); thread_debug("native_mutex_trylock result: %d\n", result); switch (result) { case WAIT_OBJECT_0: @@ -375,7 +375,7 @@ } return EINVAL; #else - return TryEnterCriticalSection(lock) == 0; + return TryEnterCriticalSection(&lock->crit) == 0; #endif } @@ -383,10 +383,10 @@ native_mutex_initialize(rb_thread_lock_t *lock) { #if USE_WIN32_MUTEX - *lock = w32_mutex_create(); - /* thread_debug("initialize mutex: %p\n", *lock); */ + lock->mutex = w32_mutex_create(); + /* thread_debug("initialize mutex: %p\n", lock->mutex); */ #else - InitializeCriticalSection(lock); + InitializeCriticalSection(&lock->crit); #endif } @@ -394,9 +394,9 @@ native_mutex_destroy(rb_thread_lock_t *lock) { #if USE_WIN32_MUTEX - w32_close_handle(*lock); + w32_close_handle(lock->mutex); #else - DeleteCriticalSection(lock); + DeleteCriticalSection(&lock->crit); #endif } Index: thread_win32.h =================================================================== --- thread_win32.h (revision 36118) +++ thread_win32.h (revision 36119) @@ -22,7 +22,12 @@ TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); typedef HANDLE rb_thread_id_t; -typedef CRITICAL_SECTION rb_thread_lock_t; + +typedef union rb_thread_lock_union { + HANDLE mutex; + CRITICAL_SECTION crit; +} rb_thread_lock_t; + typedef struct rb_thread_cond_struct { struct cond_event_entry *next; struct cond_event_entry *prev; Index: ChangeLog =================================================================== --- ChangeLog (revision 36118) +++ ChangeLog (revision 36119) @@ -1,5 +1,9 @@ -Sun Jun 17 16:20:56 2012 Nobuyoshi Nakada <nobu@r...> +Sun Jun 17 16:21:01 2012 Nobuyoshi Nakada <nobu@r...> + * thread_win32.h (rb_thread_lock_t): make a union for USE_WIN32_MUTEX. + this internal is used only in thread_win32.c, but has to be complete + to define rb_thread_t. + * thread_win32.c (native_mutex_lock, native_mutex_destroy): fix for USE_WIN32_MUTEX. -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/