1use crate::lace::{Task, WorkerP};
2use libc::{c_int, c_void, size_t};
3
4pub type GC_HOOK_CB = extern "C" fn(*mut WorkerP, *mut Task);
5
6extern "C" {
7
8 pub fn Sylvan_init_package() -> c_void;
9 pub fn Sylvan_set_sizes(
10 min_tablesize: size_t,
11 max_tablesize: size_t,
12 min_cachesize: size_t,
13 max_cachesize: size_t,
14 ) -> c_void;
15 pub fn Sylvan_set_limits(
16 memory_cap: size_t,
17 table_ratio: c_int,
18 initial_ratio: c_int,
19 ) -> c_void;
20 pub fn Sylvan_quit() -> c_void;
21 pub fn Sylvan_register_quit(cb: extern "C" fn()) -> c_void;
22 pub fn Sylvan_table_usage(filled: *mut size_t, total: *mut size_t) -> c_void;
23 pub fn Sylvan_gc() -> c_void;
24 pub fn Sylvan_gc_enable() -> c_void;
25 pub fn Sylvan_gc_disable() -> c_void;
26 pub fn Sylvan_clear_cache() -> c_void;
27 pub fn Sylvan_clear_and_mark() -> c_void;
28 pub fn Sylvan_rehash_all() -> c_void;
29 pub fn Sylvan_gc_hook_pregc(callback: GC_HOOK_CB) -> c_void;
30 pub fn Sylvan_gc_hook_postgc(callback: GC_HOOK_CB) -> c_void;
31 pub fn Sylvan_gc_hook_main(callback: GC_HOOK_CB) -> c_void;
32 pub fn Sylvan_gc_add_mark(mark_cb: GC_HOOK_CB) -> c_void;
33
34}