Permalink
Cannot retrieve contributors at this time
#ifndef RUBY_THREAD_WIN32_H | |
#define RUBY_THREAD_WIN32_H | |
/********************************************************************** | |
thread_win32.h - | |
$Author$ | |
Copyright (C) 2004-2007 Koichi Sasada | |
**********************************************************************/ | |
/* interface */ | |
# ifdef __CYGWIN__ | |
# undef _WIN32 | |
# endif | |
#define USE_VM_CLOCK 1 | |
WINBASEAPI BOOL WINAPI | |
TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection); | |
typedef struct rb_thread_cond_struct { | |
struct cond_event_entry *next; | |
struct cond_event_entry *prev; | |
} rb_nativethread_cond_t; | |
typedef struct native_thread_data_struct { | |
HANDLE interrupt_event; | |
} native_thread_data_t; | |
typedef struct rb_global_vm_lock_struct { | |
HANDLE lock; | |
} rb_global_vm_lock_t; | |
typedef DWORD native_tls_key_t; // TLS index | |
static inline void * | |
native_tls_get(native_tls_key_t key) | |
{ | |
void *ptr = TlsGetValue(key); | |
if (UNLIKELY(ptr == NULL)) { | |
rb_bug("TlsGetValue() returns NULL"); | |
} | |
return ptr; | |
} | |
static inline void | |
native_tls_set(native_tls_key_t key, void *ptr) | |
{ | |
if (UNLIKELY(TlsSetValue(key, ptr) == 0)) { | |
rb_bug("TlsSetValue() error"); | |
} | |
} | |
RUBY_SYMBOL_EXPORT_BEGIN | |
RUBY_EXTERN native_tls_key_t ruby_current_ec_key; | |
RUBY_SYMBOL_EXPORT_END | |
#endif /* RUBY_THREAD_WIN32_H */ |