summaryrefslogtreecommitdiff
path: root/libixp/thread.c
blob: ee0216c94f48e5332483e809f12bdecd52064dc3 (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
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
/* Public Domain --Kris Maglione */
#include <unistd.h>
#include "ixp_local.h"

static IxpThread ixp_nothread;
IxpThread*ixp_thread = &ixp_nothread;

static char*
errbuf(void) {
	static char errbuf[IXP_ERRMAX];

	return errbuf;
}

static void
mvoid(IxpMutex *m) {
	USED(m);
	return;
}

static int
mtrue(IxpMutex *m) {
	USED(m);
	return 1;
}

static int
mfalse(IxpMutex *m) {
	USED(m);
	return 0;
}

static void
rwvoid(IxpRWLock *rw) {
	USED(rw);
	return;
}

static int
rwtrue(IxpRWLock *rw) {
	USED(rw);
	return 1;
}

static int
rwfalse(IxpRWLock *m) {
	USED(m);
	return 0;
}

static void
rvoid(IxpRendez *r) {
	USED(r);
	return;
}

static int
rfalse(IxpRendez *r) {
	USED(r);
	return 0;
}

static void
rsleep(IxpRendez *r) {
	USED(r);
	eprint("rsleep called when not implemented\n");
}

static IxpThread ixp_nothread = {
	/* RWLock */
	.initrwlock = rwfalse,
	.rlock = rwvoid,
	.runlock = rwvoid,
	.canrlock = rwtrue,
	.wlock = rwvoid,
	.wunlock = rwvoid,
	.canwlock = rwtrue,
	.rwdestroy = rwvoid,
	/* Mutex */
	.initmutex = mfalse,
	.lock = mvoid,
	.unlock = mvoid,
	.canlock = mtrue,
	.mdestroy = mvoid,
	/* Rendez */
	.initrendez = rfalse,
	.sleep = rsleep,
	.wake = rfalse,
	.wakeall = rfalse,
	.rdestroy = rvoid,
	/* Other */
	.errbuf = errbuf,
	.read = read,
	.write = write,
	.select = select,
};