Line data Source code
1 : #ifndef HEADER_fd_src_discof_replay_fd_exec_h 2 : #define HEADER_fd_src_discof_replay_fd_exec_h 3 : 4 : #include "../../disco/fd_txn_p.h" 5 : #include "../../flamenco/types/fd_types_custom.h" 6 : 7 : /* FIXME: SIMD-0180 - set the correct epochs */ 8 0 : #define FD_SIMD0180_ACTIVE_EPOCH_TESTNET (829) 9 0 : #define FD_SIMD0180_ACTIVE_EPOCH_MAINNET (841) 10 : 11 : /* Exec tile task types. */ 12 0 : #define FD_EXECRP_TT_TXN_EXEC (1UL) /* Transaction execution. */ 13 0 : #define FD_EXECRP_TT_TXN_SIGVERIFY (2UL) /* Transaction sigverify. */ 14 : #define FD_EXECRP_TT_LTHASH (3UL) /* Account lthash. */ 15 0 : #define FD_EXECRP_TT_POH_HASH (4UL) /* PoH hashing. */ 16 : 17 : /* Sent from the replay tile to the exec tiles. These describe one of 18 : several types of tasks for an exec tile. An idx to the bank in the 19 : bank pool must be sent over because the key of the bank will change 20 : as FEC sets are processed. */ 21 : 22 : struct fd_execrp_txn_exec_msg { 23 : ulong bank_idx; 24 : ulong txn_idx; 25 : fd_txn_p_t txn[ 1 ]; 26 : 27 : /* Used currently by solcap to maintain ordering of messages 28 : this will change to using txn sigs eventually */ 29 : ulong capture_txn_idx; 30 : }; 31 : typedef struct fd_execrp_txn_exec_msg fd_execrp_txn_exec_msg_t; 32 : 33 : struct fd_execrp_txn_sigverify_msg { 34 : ulong bank_idx; 35 : ulong txn_idx; 36 : fd_txn_p_t txn[ 1 ]; 37 : }; 38 : typedef struct fd_execrp_txn_sigverify_msg fd_execrp_txn_sigverify_msg_t; 39 : 40 : struct fd_execrp_poh_hash_msg { 41 : ulong bank_idx; 42 : ulong mblk_idx; 43 : ulong hashcnt; 44 : fd_hash_t hash[ 1 ]; 45 : }; 46 : typedef struct fd_execrp_poh_hash_msg fd_execrp_poh_hash_msg_t; 47 : 48 : union fd_execrp_task_msg { 49 : fd_execrp_txn_exec_msg_t txn_exec; 50 : fd_execrp_txn_sigverify_msg_t txn_sigverify; 51 : fd_execrp_poh_hash_msg_t poh_hash; 52 : }; 53 : 54 : typedef union fd_execrp_task_msg fd_execrp_task_msg_t; 55 : 56 : /* Sent from exec tiles to the replay tile, notifying the replay tile 57 : that a task has been completed. That is, if the task has any 58 : observable side effects, such as updates to accounts, then those side 59 : effects are fully visible on any other exec tile. */ 60 : 61 : struct fd_execrp_txn_exec_done_msg { 62 : ulong txn_idx; 63 : int err; 64 : 65 : /* used by monitoring tools */ 66 : ulong slot; 67 : ushort start_shred_idx; 68 : ushort end_shred_idx; 69 : }; 70 : typedef struct fd_execrp_txn_exec_done_msg fd_execrp_txn_exec_done_msg_t; 71 : 72 : struct fd_execrp_txn_sigverify_done_msg { 73 : ulong txn_idx; 74 : int err; 75 : }; 76 : typedef struct fd_execrp_txn_sigverify_done_msg fd_execrp_txn_sigverify_done_msg_t; 77 : 78 : struct fd_execrp_poh_hash_done_msg { 79 : ulong mblk_idx; 80 : ulong hashcnt; 81 : fd_hash_t hash[ 1 ]; 82 : }; 83 : typedef struct fd_execrp_poh_hash_done_msg fd_execrp_poh_hash_done_msg_t; 84 : 85 : struct fd_execrp_task_done_msg { 86 : ulong bank_idx; 87 : union { 88 : fd_execrp_txn_exec_done_msg_t txn_exec[ 1 ]; 89 : fd_execrp_txn_sigverify_done_msg_t txn_sigverify[ 1 ]; 90 : fd_execrp_poh_hash_done_msg_t poh_hash[ 1 ]; 91 : }; 92 : }; 93 : typedef struct fd_execrp_task_done_msg fd_execrp_task_done_msg_t; 94 : 95 : #endif /* HEADER_fd_src_discof_replay_fd_execrp_h */