//===-- ActivitySPI.h -------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. //===----------------------------------------------------------------------===// #ifndef __GenealogySPI_h__ #define __GenealogySPI_h__ #include typedef void *os_activity_process_list_t; typedef void *os_activity_list_t; typedef void *os_trace_message_list_t; typedef struct os_activity_watch_s *os_activity_watch_t; typedef uint64_t os_activity_t; struct os_activity_breadcrumb_s { uint32_t breadcrumb_id; uint64_t activity_id; uint64_t timestamp; const char *name; }; typedef struct os_activity_breadcrumb_s *os_activity_breadcrumb_t; typedef struct os_trace_message_s { uint64_t trace_id; uint64_t thread; uint64_t timestamp; uint32_t offset; xpc_object_t __unsafe_unretained payload; const uint8_t *image_uuid; const char *image_path; const char *format; const void *buffer; size_t bufferLen; } * os_trace_message_t; typedef struct os_activity_process_s { os_activity_process_list_t child_procs; os_trace_message_list_t messages; os_activity_list_t activities; void *breadcrumbs; uint64_t proc_id; const uint8_t *image_uuid; const char *image_path; pid_t pid; } * os_activity_process_t; typedef struct os_activity_entry_s { uint64_t activity_start; os_activity_t activity_id; os_activity_t parent_id; const char *activity_name; const char *reason; os_trace_message_list_t messages; } * os_activity_entry_t; enum { OS_ACTIVITY_DIAGNOSTIC_DEFAULT = 0x00000000, OS_ACTIVITY_DIAGNOSTIC_PROCESS_ONLY = 0x00000001, OS_ACTIVITY_DIAGNOSTIC_SKIP_DECODE = 0x00000002, OS_ACTIVITY_DIAGNOSTIC_FLATTENED = 0x00000004, OS_ACTIVITY_DIAGNOSTIC_ALL_ACTIVITIES = 0x00000008, OS_ACTIVITY_DIAGNOSTIC_MAX = 0x0000000f }; typedef uint32_t os_activity_diagnostic_flag_t; enum { OS_ACTIVITY_WATCH_DEFAULT = 0x00000000, OS_ACTIVITY_WATCH_PROCESS_ONLY = 0x00000001, OS_ACTIVITY_WATCH_SKIP_DECODE = 0x00000002, OS_ACTIVITY_WATCH_PAYLOAD = 0x00000004, OS_ACTIVITY_WATCH_ERRORS = 0x00000008, OS_ACTIVITY_WATCH_FAULTS = 0x00000010, OS_ACTIVITY_WATCH_MAX = 0x0000001f }; typedef uint32_t os_activity_watch_flag_t; // Return values from os_trace_get_type() #define OS_TRACE_TYPE_RELEASE (1u << 0) #define OS_TRACE_TYPE_DEBUG (1u << 1) #define OS_TRACE_TYPE_ERROR ((1u << 6) | (1u << 0)) #define OS_TRACE_TYPE_FAULT ((1u << 7) | (1u << 6) | (1u << 0)) typedef void (^os_activity_watch_block_t)(os_activity_watch_t watch, os_activity_process_t process_info, bool canceled); typedef void (^os_diagnostic_block_t)(os_activity_process_list_t processes, int error); #endif