#ifndef Tracing_h
#define Tracing_h
#include <stdio.h>
#include <stdint.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <sys/mount.h>
#include <uuid/uuid.h>
#include <mach-o/loader.h>
#include <System/sys/kdebug.h>
#ifndef DBG_DYLD_SIGNPOST
#define DBG_DYLD_SIGNPOST (6)
#endif
#ifndef DBG_DYLD_TIMING
#define DBG_DYLD_TIMING (7)
#endif
#ifndef DBG_DYLD_PRINT
#define DBG_DYLD_PRINT (8)
#endif
#ifndef DBG_DYLD_SIGNPOST_START_DYLD
#define DBG_DYLD_SIGNPOST_START_DYLD (0)
#endif
#ifndef DBG_DYLD_SIGNPOST_START_MAIN
#define DBG_DYLD_SIGNPOST_START_MAIN (1)
#endif
#ifndef DBG_DYLD_SIGNPOST_START_MAIN_DYLD2
#define DBG_DYLD_SIGNPOST_START_MAIN_DYLD2 (2)
#endif
#ifndef DBG_DYLD_TIMING_STATIC_INITIALIZER
#define DBG_DYLD_TIMING_STATIC_INITIALIZER (0)
#endif
#ifndef DBG_DYLD_PRINT_GENERIC
#define DBG_DYLD_PRINT_GENERIC (0)
#endif
#define VIS_HIDDEN __attribute__((visibility("hidden")))
namespace dyld3 {
VIS_HIDDEN
void kdebug_trace_dyld_image(const uint32_t code,
const uuid_t* uuid_bytes,
const fsobj_id_t fsobjid,
const fsid_t fsid,
const mach_header* load_addr);
VIS_HIDDEN
void kdebug_trace_dyld_signpost(const uint32_t code, uint64_t data1, uint64_t data2);
VIS_HIDDEN
void kdebug_trace_dyld_duration(const uint32_t code, uint64_t data1, uint64_t data2, void (^block)());
VIS_HIDDEN
void kdebug_trace_print(const uint32_t code, const char *string);
}
#endif