1/**********************************************************************
2
3  thread.h -
4
5  $Author: matz $
6  created at: Tue Jul 10 17:35:43 JST 2012
7
8  Copyright (C) 2007 Yukihiro Matsumoto
9
10**********************************************************************/
11
12#ifndef RUBY_THREAD_H
13#define RUBY_THREAD_H 1
14
15#if defined(__cplusplus)
16extern "C" {
17#if 0
18} /* satisfy cc-mode */
19#endif
20#endif
21
22#include "ruby/intern.h"
23
24#if defined __GNUC__ && __GNUC__ >= 4
25#pragma GCC visibility push(default)
26#endif
27
28void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
29
30void *rb_thread_call_without_gvl(void *(*func)(void *), void *data1,
31				 rb_unblock_function_t *ubf, void *data2);
32void *rb_thread_call_without_gvl2(void *(*func)(void *), void *data1,
33				  rb_unblock_function_t *ubf, void *data2);
34
35#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_AFTER 0x01
36#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_
37
38#if defined __GNUC__ && __GNUC__ >= 4
39#pragma GCC visibility pop
40#endif
41
42#if defined(__cplusplus)
43#if 0
44{ /* satisfy cc-mode */
45#endif
46}  /* extern "C" { */
47#endif
48
49#endif /* RUBY_THREAD_H */
50