Line data Source code
1 : #ifndef HEADER_fd_src_flamenco_runtime_context_fd_capture_ctx_h 2 : #define HEADER_fd_src_flamenco_runtime_context_fd_capture_ctx_h 3 : 4 : #include "../../capture/fd_solcap_writer.h" 5 : 6 : /* Context needed to do solcap capture during execution of transactions */ 7 : #define FD_CAPTURE_CTX_ALIGN (8UL) 8 : struct __attribute__((aligned(FD_CAPTURE_CTX_ALIGN))) fd_capture_ctx { 9 : ulong magic; /* ==FD_CAPTURE_CTX_MAGIC */ 10 : 11 : /* Solcap */ 12 : ulong solcap_start_slot; 13 : int trace_dirfd; 14 : int trace_mode; 15 : fd_solcap_writer_t * capture; 16 : int capture_txns; /* Capturing txns can add significant time */ 17 : 18 : /* Checkpointing */ 19 : ulong checkpt_freq; /* Must be a rooted slot */ 20 : char const * checkpt_path; /* Wksp checkpoint format */ 21 : char const * checkpt_archive; /* Funk archive format */ 22 : 23 : /*======== PROTOBUF ========*/ 24 : char const * dump_proto_output_dir; 25 : char const * dump_proto_sig_filter; 26 : ulong dump_proto_start_slot; 27 : 28 : /* Instruction Capture */ 29 : int dump_instr_to_pb; 30 : 31 : /* Transaction Capture */ 32 : int dump_txn_to_pb; 33 : 34 : /* Block Capture */ 35 : int dump_block_to_pb; 36 : 37 : /* Syscall Capture */ 38 : int dump_syscall_to_pb; 39 : 40 : /* ELF Capture */ 41 : int dump_elf_to_pb; 42 : }; 43 : typedef struct fd_capture_ctx fd_capture_ctx_t; 44 0 : #define FD_CAPTURE_CTX_FOOTPRINT ( sizeof(fd_capture_ctx_t) + fd_solcap_writer_footprint() ) 45 0 : #define FD_CAPTURE_CTX_MAGIC (0x193ECD2A6C395195UL) /* random */ 46 : 47 : FD_PROTOTYPES_BEGIN 48 : 49 : void * 50 : fd_capture_ctx_new( void * mem ); 51 : 52 : fd_capture_ctx_t * 53 : fd_capture_ctx_join( void * mem ); 54 : 55 : void * 56 : fd_capture_ctx_leave( fd_capture_ctx_t * ctx ); 57 : 58 : void * 59 : fd_capture_ctx_delete( void * mem ); 60 : 61 : /* Temporary locks to protect the blockstore txn_map. See comment in 62 : fd_runtime_write_transaction_status. */ 63 : void 64 : fd_capture_ctx_txn_status_start_read( void ); 65 : 66 : void 67 : fd_capture_ctx_txn_status_end_read( void ); 68 : 69 : void 70 : fd_capture_ctx_txn_status_start_write( void ); 71 : 72 : void 73 : fd_capture_ctx_txn_status_end_write( void ); 74 : 75 : FD_PROTOTYPES_END 76 : 77 : #endif /* HEADER_fd_src_flamenco_runtime_context_fd_capture_ctx_h */