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-exception
6//===----------------------------------------------------------------------===//
7
8#ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_GENEALOGYSPI_H
9#define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_GENEALOGYSPI_H
10
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 = 0x0000000f
68};
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 = 0x0000001f
79};
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#endif
95

source code of lldb/tools/debugserver/source/MacOSX/GenealogySPI.h