#include <sys/cdefs.h>
#include <stddef.h>
#include "auto_zone.h"
__BEGIN_DECLS
typedef enum {
AUTO_TRACE_SCANNING_PHASE = 0,
AUTO_TRACE_WEAK_REFERENCE_PHASE,
AUTO_TRACE_FINALIZING_PHASE,
AUTO_TRACE_SCAVENGING_PHASE
} auto_collection_phase_t;
typedef struct {
uint32_t size; void (*auto_trace_collection_begin)(auto_zone_t *zone, boolean_t generational);
void (*auto_trace_collection_end)(auto_zone_t *zone, boolean_t generational, size_t objectsReclaimed, size_t bytesReclaimed, size_t totalObjectsInUse, size_t totalBytesInUse);
} auto_trace_collection_callouts;
void auto_trace_collection_begin(auto_zone_t *zone, boolean_t generational);
void auto_trace_phase_begin(auto_zone_t *zone, boolean_t generational, auto_collection_phase_t phase);
void auto_trace_phase_end(auto_zone_t *zone, boolean_t generational, auto_collection_phase_t phase, size_t objectsReclaimed, size_t bytesReclaimed);
void auto_trace_collection_end(auto_zone_t *zone, boolean_t generational, size_t objectsReclaimed, size_t bytesReclaimed, size_t totalObjectsInUse, size_t totalBytesInUse);
__END_DECLS