Lite VM fakes struct list_head
[akaros.git] / kern / ivy / sharc.c
1 #ifdef __IVY__
2 #include <assert.h>
3
4 int __ivy_checking_on = 1;
5
6 void __sharc_single_thread_error_mayreturn(const char *msg)
7 {
8         int old;
9         if (!__ivy_checking_on) return;
10         old = __ivy_checking_on;
11         warn("Ivy: Not single threaded: %s\n", msg);
12         __ivy_checking_on = old;
13 }
14
15 void __sharc_lock_error_mayreturn(const void *lck, const void *what,
16                         unsigned int sz, char *msg)
17 {
18         int old;
19         if (!__ivy_checking_on) return;
20         old = __ivy_checking_on;
21         __ivy_checking_on = 0;
22         warn("Ivy: The lock %p was not held for (%p,%d): %s\n",
23           lck, what, sz, msg);
24         __ivy_checking_on = old;
25 }
26
27 void __sharc_lock_coerce_error_mayreturn(void *dstlck, void *srclck, char *msg)
28 {
29         int old;
30         if (!__ivy_checking_on) return;
31         old = __ivy_checking_on;
32         __ivy_checking_on = 0;
33         warn("Ivy: The locks in the coercion at %s must be the same\n", msg);
34         __ivy_checking_on = old;
35 }
36
37 #endif // __IVY__