/
none.cr
108 lines (86 loc) · 1.93 KB
/
none.cr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
{% unless flag?(:win32) %}
@[Link("pthread")]
lib LibC
end
{% end %}
module GC
def self.init
end
# :nodoc:
def self.malloc(size : LibC::SizeT)
LibC.malloc(size)
end
# :nodoc:
def self.malloc_atomic(size : LibC::SizeT)
LibC.malloc(size)
end
# :nodoc:
def self.realloc(pointer : Void*, size : LibC::SizeT)
LibC.realloc(pointer, size)
end
def self.collect
end
def self.enable
end
def self.disable
end
def self.free(pointer : Void*)
LibC.free(pointer)
end
def self.is_heap_ptr(pointer : Void*)
false
end
def self.add_finalizer(object)
end
def self.stats
zero = LibC::ULong.new(0)
Stats.new(zero, zero, zero, zero, zero)
end
{% unless flag?(:win32) %}
# :nodoc:
def self.pthread_create(thread : LibC::PthreadT*, attr : LibC::PthreadAttrT*, start : Void* -> Void*, arg : Void*)
LibC.pthread_create(thread, attr, start, arg)
end
# :nodoc:
def self.pthread_join(thread : LibC::PthreadT) : Void*
ret = LibC.pthread_join(thread, out value)
raise Errno.new("pthread_join") unless ret == 0
value
end
# :nodoc:
def self.pthread_detach(thread : LibC::PthreadT)
LibC.pthread_detach(thread)
end
{% end %}
@@stack_bottom = Pointer(Void).null
# :nodoc:
def self.current_thread_stack_bottom
@@stack_bottom
end
# :nodoc:
{% if flag?(:preview_mt) %}
def self.set_stackbottom(thread : Thread, stack_bottom : Void*)
# NOTE we could store stack_bottom per thread,
# and return it in `#current_thread_stack_bottom`,
# but there is no actual use for that.
end
{% else %}
def self.set_stackbottom(stack_bottom : Void*)
end
{% end %}
# :nodoc:
def self.lock_read
end
# :nodoc:
def self.unlock_read
end
# :nodoc:
def self.lock_write
end
# :nodoc:
def self.unlock_write
end
# :nodoc:
def self.push_stack(stack_top, stack_bottom)
end
end