sylvan_sys/
common.rs

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}