stackprofx 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,23 @@
1
+ #ifndef RUBY_THREAD_NATIVE_H
2
+ #define RUBY_THREAD_NATIVE_H
3
+
4
+ #if defined(_WIN32)
5
+ #include "thread_win32.h"
6
+ #elif defined(HAVE_PTHREAD_H)
7
+ #include "thread_pthread.h"
8
+ #else
9
+ #error "unsupported thread type"
10
+ #endif
11
+
12
+ RUBY_SYMBOL_EXPORT_BEGIN
13
+
14
+ rb_nativethread_id_t rb_nativethread_self();
15
+
16
+ void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
17
+ void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
18
+ void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
19
+ void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
20
+
21
+ RUBY_SYMBOL_EXPORT_END
22
+
23
+ #endif
@@ -0,0 +1,56 @@
1
+ /**********************************************************************
2
+
3
+ thread_pthread.h -
4
+
5
+ $Author: ko1 $
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ #ifndef RUBY_THREAD_PTHREAD_H
12
+ #define RUBY_THREAD_PTHREAD_H
13
+
14
+ #include <pthread.h>
15
+ #ifdef HAVE_PTHREAD_NP_H
16
+ #include <pthread_np.h>
17
+ #endif
18
+ typedef pthread_t rb_nativethread_id_t;
19
+ typedef pthread_mutex_t rb_nativethread_lock_t;
20
+
21
+ typedef struct rb_thread_cond_struct {
22
+ pthread_cond_t cond;
23
+ #ifdef HAVE_CLOCKID_T
24
+ clockid_t clockid;
25
+ #endif
26
+ } rb_nativethread_cond_t;
27
+
28
+ typedef struct native_thread_data_struct {
29
+ void *signal_thread_list;
30
+ rb_nativethread_cond_t sleep_cond;
31
+ } native_thread_data_t;
32
+
33
+ #include <semaphore.h>
34
+
35
+ #undef except
36
+ #undef try
37
+ #undef leave
38
+ #undef finally
39
+
40
+ typedef struct rb_global_vm_lock_struct {
41
+ /* fast path */
42
+ unsigned long acquired;
43
+ pthread_mutex_t lock;
44
+
45
+ /* slow path */
46
+ volatile unsigned long waiting;
47
+ rb_nativethread_cond_t cond;
48
+
49
+ /* yield */
50
+ rb_nativethread_cond_t switch_cond;
51
+ rb_nativethread_cond_t switch_wait_cond;
52
+ int need_yield;
53
+ int wait_yield;
54
+ } rb_global_vm_lock_t;
55
+
56
+ #endif /* RUBY_THREAD_PTHREAD_H */
@@ -0,0 +1,45 @@
1
+ /**********************************************************************
2
+
3
+ thread_win32.h -
4
+
5
+ $Author: ko1 $
6
+
7
+ Copyright (C) 2004-2007 Koichi Sasada
8
+
9
+ **********************************************************************/
10
+
11
+ /* interface */
12
+ #ifndef RUBY_THREAD_WIN32_H
13
+ #define RUBY_THREAD_WIN32_H
14
+
15
+ #include <windows.h>
16
+
17
+ # ifdef __CYGWIN__
18
+ # undef _WIN32
19
+ # endif
20
+
21
+ WINBASEAPI BOOL WINAPI
22
+ TryEnterCriticalSection(IN OUT LPCRITICAL_SECTION lpCriticalSection);
23
+
24
+ typedef HANDLE rb_nativethread_id_t;
25
+
26
+ typedef union rb_thread_lock_union {
27
+ HANDLE mutex;
28
+ CRITICAL_SECTION crit;
29
+ } rb_nativethread_lock_t;
30
+
31
+ typedef struct rb_thread_cond_struct {
32
+ struct cond_event_entry *next;
33
+ struct cond_event_entry *prev;
34
+ } rb_nativethread_cond_t;
35
+
36
+ typedef struct native_thread_data_struct {
37
+ HANDLE interrupt_event;
38
+ } native_thread_data_t;
39
+
40
+ typedef struct rb_global_vm_lock_struct {
41
+ HANDLE lock;
42
+ } rb_global_vm_lock_t;
43
+
44
+ #endif /* RUBY_THREAD_WIN32_H */
45
+