Ruby  3.1.4p223 (2023-03-30 revision HEAD)
thread_win32.h
1 #ifndef RUBY_THREAD_WIN32_H
2 #define RUBY_THREAD_WIN32_H
3 /**********************************************************************
4 
5  thread_win32.h -
6 
7  $Author$
8 
9  Copyright (C) 2004-2007 Koichi Sasada
10 
11 **********************************************************************/
12 
13 /* interface */
14 
15 # ifdef __CYGWIN__
16 # undef _WIN32
17 # endif
18 
19 #define USE_VM_CLOCK 1
20 
21 WINBASEAPI BOOL WINAPI
22 TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection);
23 
25  struct cond_event_entry *next;
26  struct cond_event_entry *prev;
27 };
28 
29 typedef struct native_thread_data_struct {
30  HANDLE interrupt_event;
32 
33 typedef struct rb_global_vm_lock_struct {
34  HANDLE lock;
36 
37 typedef DWORD native_tls_key_t; // TLS index
38 
39 static inline void *
40 native_tls_get(native_tls_key_t key)
41 {
42  void *ptr = TlsGetValue(key);
43  if (UNLIKELY(ptr == NULL)) {
44  rb_bug("TlsGetValue() returns NULL");
45  }
46  return ptr;
47 }
48 
49 static inline void
50 native_tls_set(native_tls_key_t key, void *ptr)
51 {
52  if (UNLIKELY(TlsSetValue(key, ptr) == 0)) {
53  rb_bug("TlsSetValue() error");
54  }
55 }
56 
57 RUBY_SYMBOL_EXPORT_BEGIN
58 RUBY_EXTERN native_tls_key_t ruby_current_ec_key;
59 RUBY_SYMBOL_EXPORT_END
60 
61 #endif /* RUBY_THREAD_WIN32_H */
#define RUBY_EXTERN
Declaration of externally visible global variables.
Definition: dllexport.h:47
void rb_bug(const char *fmt,...)
Interpreter panic switch.
Definition: error.c:802