summaryrefslogtreecommitdiff
path: root/lib/std/threadhooks.myr
blob: 71f4d4c1bd02ebdf2c71c3f71d009f79a43b5d17 (plain)
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
use "die"

pkg std =
	pkglocal var lock	: (l : void# -> void)
	pkglocal var unlock	: (l : void# -> void)
	pkglocal var memlck	: void#
	pkglocal var netlck	: void#
	pkglocal var envlck	: void#

	const __lockinit	: ( \
		mem : void#, \
		net : void#, \
		env : void#, \
		lck : (l : void# -> void), \
		unlck : (l : void# -> void) \
		-> void)
;;

/* thread lock wrapper functions */
var lock
var unlock

/* locks for various parts of libstd */
var memlck
var netlck
var envlck
/*
work around compiler bug: we don't generate
syms for the funcs with an initializer
*/
const __init__ = {
	lock = {l; }
	unlock = {l; }
}

const __lockinit = {mem, net, env, lck, unlck
	memlck = mem
	netlck = net
	envlck = env
	lock = lck
	unlock = unlck
}