RetroZilla/gc/boehm/generic_threads.h

50 lines
1.2 KiB
C

/*
generic_threads.c
A module that permits clients of the GC to supply callback functions
for thread stack scanning.
by Patrick C. Beard.
*/
#ifndef __GENERIC_THREADS__
#define __GENERIC_THREADS__
#ifdef __cplusplus
extern "C" {
#endif
/**
* Passed to a thread marking function, to allow it to mark a range of memory.
*/
typedef void (*GC_mark_range_proc) (char* begin, char* end);
/**
* Generic all stack marking function.
*/
typedef void (*GC_generic_mark_all_stacks_proc) (GC_mark_range_proc marker);
extern GC_generic_mark_all_stacks_proc GC_generic_mark_all_stacks;
/**
* Generic mutual exclusion facility.
*/
typedef void (*GC_generic_proc) (void* mutex);
extern void* GC_generic_mutex;
extern GC_generic_proc GC_generic_locker;
extern GC_generic_proc GC_generic_unlocker;
extern GC_generic_proc GC_generic_stopper;
extern GC_generic_proc GC_generic_starter;
extern void GC_generic_init_threads(GC_generic_mark_all_stacks_proc mark_all_stacks,
void* mutex,
GC_generic_proc locker, GC_generic_proc unlocker,
GC_generic_proc stopper, GC_generic_proc starter);
#ifdef __cplusplus
}
#endif
#endif /* __GENERIC_THREADS__ */