95 lines · c
1//===-- GenealogySPI.h ------------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//===----------------------------------------------------------------------===//7 8#ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_GENEALOGYSPI_H9#define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_GENEALOGYSPI_H10 11#include <xpc/xpc.h>12 13typedef void *os_activity_process_list_t;14typedef void *os_activity_list_t;15typedef void *os_trace_message_list_t;16typedef struct os_activity_watch_s *os_activity_watch_t;17typedef uint64_t os_activity_t;18 19struct os_activity_breadcrumb_s {20 uint32_t breadcrumb_id;21 uint64_t activity_id;22 uint64_t timestamp;23 const char *name;24};25 26typedef struct os_activity_breadcrumb_s *os_activity_breadcrumb_t;27 28typedef struct os_trace_message_s {29 uint64_t trace_id;30 uint64_t thread;31 uint64_t timestamp;32 uint32_t offset;33 xpc_object_t __unsafe_unretained payload;34 const uint8_t *image_uuid;35 const char *image_path;36 const char *format;37 const void *buffer;38 size_t bufferLen;39} * os_trace_message_t;40 41typedef struct os_activity_process_s {42 os_activity_process_list_t child_procs;43 os_trace_message_list_t messages;44 os_activity_list_t activities;45 void *breadcrumbs;46 uint64_t proc_id;47 const uint8_t *image_uuid;48 const char *image_path;49 pid_t pid;50} * os_activity_process_t;51 52typedef struct os_activity_entry_s {53 uint64_t activity_start;54 os_activity_t activity_id;55 os_activity_t parent_id;56 const char *activity_name;57 const char *reason;58 os_trace_message_list_t messages;59} * os_activity_entry_t;60 61enum {62 OS_ACTIVITY_DIAGNOSTIC_DEFAULT = 0x00000000,63 OS_ACTIVITY_DIAGNOSTIC_PROCESS_ONLY = 0x00000001,64 OS_ACTIVITY_DIAGNOSTIC_SKIP_DECODE = 0x00000002,65 OS_ACTIVITY_DIAGNOSTIC_FLATTENED = 0x00000004,66 OS_ACTIVITY_DIAGNOSTIC_ALL_ACTIVITIES = 0x00000008,67 OS_ACTIVITY_DIAGNOSTIC_MAX = 0x0000000f68};69typedef uint32_t os_activity_diagnostic_flag_t;70 71enum {72 OS_ACTIVITY_WATCH_DEFAULT = 0x00000000,73 OS_ACTIVITY_WATCH_PROCESS_ONLY = 0x00000001,74 OS_ACTIVITY_WATCH_SKIP_DECODE = 0x00000002,75 OS_ACTIVITY_WATCH_PAYLOAD = 0x00000004,76 OS_ACTIVITY_WATCH_ERRORS = 0x00000008,77 OS_ACTIVITY_WATCH_FAULTS = 0x00000010,78 OS_ACTIVITY_WATCH_MAX = 0x0000001f79};80typedef uint32_t os_activity_watch_flag_t;81 82// Return values from os_trace_get_type()83#define OS_TRACE_TYPE_RELEASE (1u << 0)84#define OS_TRACE_TYPE_DEBUG (1u << 1)85#define OS_TRACE_TYPE_ERROR ((1u << 6) | (1u << 0))86#define OS_TRACE_TYPE_FAULT ((1u << 7) | (1u << 6) | (1u << 0))87 88typedef void (^os_activity_watch_block_t)(os_activity_watch_t watch,89 os_activity_process_t process_info,90 bool canceled);91typedef void (^os_diagnostic_block_t)(os_activity_process_list_t processes,92 int error);93 94#endif95