Skip to main content

ghostscope_protocol/
lib.rs

1//! GhostScope Protocol Library
2//!
3//! Provides types and functionality for the GhostScope tracing protocol.
4
5// Core modules
6pub mod bpf_abi;
7mod type_kind;
8
9pub mod format_printer;
10pub mod streaming_parser;
11pub mod trace_context;
12pub mod trace_event;
13pub mod type_info;
14
15pub use type_kind::{consts, TypeKind};
16
17pub use trace_event::{
18    EndInstructionData, ExprErrorData, InstructionHeader, InstructionType,
19    PrintComplexFormatArgPrefix, PrintStringIndexData, PrintVariableIndexData, TraceEventHeader,
20    TraceEventMessage, VariableReadErrorPayload, VariableStatus, END_INSTRUCTION_DATA_OFFSET,
21    END_INSTRUCTION_EXECUTION_STATUS_OFFSET, END_INSTRUCTION_TOTAL_INSTRUCTIONS_OFFSET,
22    EXPR_ERROR_DATA_ERROR_CODE_OFFSET, EXPR_ERROR_DATA_FAILING_ADDR_OFFSET,
23    EXPR_ERROR_DATA_FLAGS_OFFSET, EXPR_ERROR_DATA_SIZE, EXPR_ERROR_DATA_STRING_INDEX_OFFSET,
24    INSTRUCTION_HEADER_DATA_LENGTH_OFFSET, INSTRUCTION_HEADER_INST_TYPE_OFFSET,
25    INSTRUCTION_HEADER_RESERVED_OFFSET, INSTRUCTION_HEADER_SIZE,
26    PRINT_COMPLEX_FORMAT_ARG_ACCESS_PATH_LEN_OFFSET, PRINT_COMPLEX_FORMAT_ARG_ACCESS_PATH_OFFSET,
27    PRINT_COMPLEX_FORMAT_ARG_DATA_LEN_SIZE, PRINT_COMPLEX_FORMAT_ARG_FIXED_HEADER_LEN,
28    PRINT_COMPLEX_FORMAT_ARG_STATUS_OFFSET, PRINT_COMPLEX_FORMAT_ARG_TYPE_INDEX_OFFSET,
29    PRINT_COMPLEX_FORMAT_ARG_VAR_NAME_INDEX_OFFSET, PRINT_COMPLEX_FORMAT_DATA_ARG_COUNT_OFFSET,
30    TRACE_EVENT_HEADER_MAGIC_OFFSET, TRACE_EVENT_HEADER_SIZE, TRACE_EVENT_MESSAGE_PID_OFFSET,
31    TRACE_EVENT_MESSAGE_SIZE, TRACE_EVENT_MESSAGE_TID_OFFSET, TRACE_EVENT_MESSAGE_TIMESTAMP_OFFSET,
32    TRACE_EVENT_MESSAGE_TRACE_ID_OFFSET, VARIABLE_READ_ERROR_PAYLOAD_ADDR_OFFSET,
33    VARIABLE_READ_ERROR_PAYLOAD_ERRNO_OFFSET, VARIABLE_READ_ERROR_PAYLOAD_LEN,
34};
35
36pub use bpf_abi::{
37    backtrace_unwind_row_from_words, backtrace_unwind_row_register_word, backtrace_unwind_row_word,
38    BacktraceModuleRowRange, BacktraceTailCallState, BacktraceUnwindRow, PidAliasValue,
39    ProcModuleKey, ProcModuleOffsetsValue, ProcModuleRangeKey, ProcModuleRangeMeta,
40    ProcModuleRangeValue, BACKTRACE_MODULE_ROW_RANGE_ROW_END_OFFSET,
41    BACKTRACE_MODULE_ROW_RANGE_ROW_START_OFFSET, BACKTRACE_MODULE_ROW_RANGE_SIZE,
42    BACKTRACE_RA_AT_CFA_OFFSET, BACKTRACE_RA_REGISTER, BACKTRACE_RA_SAME_VALUE,
43    BACKTRACE_RA_UNDEFINED, BACKTRACE_RA_VAL_CFA_OFFSET, BACKTRACE_RECOVERY_AT_CFA_OFFSET,
44    BACKTRACE_RECOVERY_REGISTER, BACKTRACE_RECOVERY_SAME_VALUE, BACKTRACE_RECOVERY_UNDEFINED,
45    BACKTRACE_RECOVERY_VAL_CFA_OFFSET, BACKTRACE_TAIL_NO_NEXT_SLOT,
46    BACKTRACE_TAIL_STATE_ACTIVE_SLOT_OFFSET, BACKTRACE_TAIL_STATE_CURRENT_IP_OFFSET,
47    BACKTRACE_TAIL_STATE_CURRENT_RBP_OFFSET, BACKTRACE_TAIL_STATE_CURRENT_RSP_OFFSET,
48    BACKTRACE_TAIL_STATE_ERROR_CODE_OFFSET, BACKTRACE_TAIL_STATE_EVENT_SIZE_OFFSET,
49    BACKTRACE_TAIL_STATE_FLAGS_OFFSET, BACKTRACE_TAIL_STATE_FRAME_COUNT_OFFSET,
50    BACKTRACE_TAIL_STATE_INST_OFFSET_OFFSET, BACKTRACE_TAIL_STATE_MODULE_BIAS_OFFSET,
51    BACKTRACE_TAIL_STATE_MODULE_COOKIE_OFFSET, BACKTRACE_TAIL_STATE_NEXT_SLOT_OFFSET,
52    BACKTRACE_TAIL_STATE_OFFSETS_FOUND_OFFSET, BACKTRACE_TAIL_STATE_REQUESTED_DEPTH_OFFSET,
53    BACKTRACE_TAIL_STATE_SIZE, BACKTRACE_TAIL_STATE_TAIL_CALLS_OFFSET,
54    BACKTRACE_UNWIND_ROW_CFA_OFFSET_OFFSET, BACKTRACE_UNWIND_ROW_CFA_REGISTER_OFFSET,
55    BACKTRACE_UNWIND_ROW_PC_END_OFFSET, BACKTRACE_UNWIND_ROW_PC_START_OFFSET,
56    BACKTRACE_UNWIND_ROW_RA_KIND_OFFSET, BACKTRACE_UNWIND_ROW_RA_OFFSET_OFFSET,
57    BACKTRACE_UNWIND_ROW_RA_REGISTER_OFFSET, BACKTRACE_UNWIND_ROW_RBP_KIND_OFFSET,
58    BACKTRACE_UNWIND_ROW_RBP_OFFSET_OFFSET, BACKTRACE_UNWIND_ROW_RBP_REGISTER_OFFSET,
59    BACKTRACE_UNWIND_ROW_SIZE, BACKTRACE_UNWIND_WORDS_PER_ROW, BACKTRACE_UNWIND_WORD_CFA_OFFSET,
60    BACKTRACE_UNWIND_WORD_PC_END, BACKTRACE_UNWIND_WORD_PC_START, BACKTRACE_UNWIND_WORD_RA_OFFSET,
61    BACKTRACE_UNWIND_WORD_RBP_OFFSET, BACKTRACE_UNWIND_WORD_REGISTERS,
62    PID_ALIAS_VALUE_PROC_PID_OFFSET, PID_ALIAS_VALUE_SIZE, PROC_MODULE_KEY_COOKIE_HI_OFFSET,
63    PROC_MODULE_KEY_COOKIE_LO_OFFSET, PROC_MODULE_KEY_PAD_OFFSET, PROC_MODULE_KEY_PID_OFFSET,
64    PROC_MODULE_KEY_SIZE, PROC_MODULE_OFFSETS_VALUE_BASE_OFFSET,
65    PROC_MODULE_OFFSETS_VALUE_BSS_OFFSET, PROC_MODULE_OFFSETS_VALUE_DATA_OFFSET,
66    PROC_MODULE_OFFSETS_VALUE_RODATA_OFFSET, PROC_MODULE_OFFSETS_VALUE_SIZE,
67    PROC_MODULE_OFFSETS_VALUE_SIZE_OFFSET, PROC_MODULE_OFFSETS_VALUE_TEXT_OFFSET,
68    PROC_MODULE_RANGE_KEY_INDEX_OFFSET, PROC_MODULE_RANGE_KEY_PAD_OFFSET,
69    PROC_MODULE_RANGE_KEY_PID_OFFSET, PROC_MODULE_RANGE_KEY_SIZE,
70    PROC_MODULE_RANGE_KEY_SLOT_OFFSET, PROC_MODULE_RANGE_META_ACTIVE_SLOT_OFFSET,
71    PROC_MODULE_RANGE_META_COUNT_OFFSET, PROC_MODULE_RANGE_META_SIZE,
72    PROC_MODULE_RANGE_VALUE_BASE_OFFSET, PROC_MODULE_RANGE_VALUE_COOKIE_HI_OFFSET,
73    PROC_MODULE_RANGE_VALUE_COOKIE_LO_OFFSET, PROC_MODULE_RANGE_VALUE_END_OFFSET,
74    PROC_MODULE_RANGE_VALUE_SIZE, PROC_MODULE_RANGE_VALUE_TEXT_OFFSET,
75};
76
77pub use trace_context::TraceContext;
78
79pub use format_printer::FormatPrinter;
80
81pub use streaming_parser::{
82    EventSource, ParseState, ParsedBacktraceFrame, ParsedInstruction, ParsedTraceEvent,
83    StreamingTraceParser,
84};
85
86pub use type_info::{EnumVariant, StructMember, TypeCache, TypeInfo, TypeQualifier};
87
88pub use ghostscope_platform as platform;