LCOV - code coverage report
Current view: top level - flamenco/runtime - fd_bank_hash_cmp.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 10 20 50.0 %
Date: 2025-10-13 04:42:14 Functions: 2 420 0.5 %

          Line data    Source code
       1             : #ifndef HEADER_fd_src_flamenco_runtime_fd_bank_hash_cmp_h
       2             : #define HEADER_fd_src_flamenco_runtime_fd_bank_hash_cmp_h
       3             : 
       4             : #include "../fd_flamenco_base.h"
       5             : #include "../types/fd_types_custom.h"
       6             : 
       7             : struct fd_bank_hash_cmp_entry {
       8             :   ulong     slot;
       9             :   uint      hash;
      10             :   fd_hash_t ours;
      11             :   fd_hash_t theirs[8];
      12             :   ulong     stakes[8];
      13             :   ulong     cnt;
      14             :   int       overflow;
      15             : };
      16             : typedef struct fd_bank_hash_cmp_entry fd_bank_hash_cmp_entry_t;
      17             : #define MAP_NAME         fd_bank_hash_cmp_map
      18           0 : #define MAP_T            fd_bank_hash_cmp_entry_t
      19           0 : #define MAP_KEY          slot
      20           0 : #define MAP_KEY_NULL     ULONG_MAX
      21           0 : #define MAP_KEY_INVAL(k) ((k)==ULONG_MAX)
      22           3 : #define MAP_LG_SLOT_CNT  (16) /* 0.25 fill ratio */
      23             : #include "../../util/tmpl/fd_map.c"
      24             : 
      25             : struct fd_bank_hash_cmp {
      26             :   ulong        map_offset;
      27             :   ulong        cnt;
      28             :   ulong        watermark; /*  */
      29             :   ulong        total_stake;
      30             :   volatile int lock;
      31             : };
      32             : typedef struct fd_bank_hash_cmp fd_bank_hash_cmp_t;
      33             : 
      34             : FD_PROTOTYPES_BEGIN
      35             : 
      36             : static inline void
      37             : fd_bank_hash_cmp_set_map_offset( fd_bank_hash_cmp_t * bank_hash_cmp,
      38           0 :                                  uchar *              map_mem ) {
      39           0 :   bank_hash_cmp->map_offset = (ulong)map_mem - (ulong)bank_hash_cmp;
      40           0 : }
      41             : 
      42             : static inline fd_bank_hash_cmp_entry_t *
      43           0 : fd_bank_hash_cmp_get_map( fd_bank_hash_cmp_t * bank_hash_cmp ) {
      44           0 :   return fd_bank_hash_cmp_map_join( (uchar *)bank_hash_cmp + bank_hash_cmp->map_offset );
      45           0 : }
      46             : 
      47             : static inline ulong
      48          15 : fd_bank_hash_cmp_align( void ) {
      49          15 :   return 128UL;
      50          15 : }
      51             : 
      52             : FD_FN_CONST static inline ulong
      53           3 : fd_bank_hash_cmp_footprint( void ) {
      54             :   /* clang-format off */
      55           3 :     return FD_LAYOUT_FINI( FD_LAYOUT_APPEND( FD_LAYOUT_APPEND( FD_LAYOUT_INIT,
      56           3 :         fd_bank_hash_cmp_align(), sizeof(fd_bank_hash_cmp_t) ),
      57           3 :         fd_bank_hash_cmp_map_align(), fd_bank_hash_cmp_map_footprint() ),
      58           3 :         fd_bank_hash_cmp_align() );
      59             :   /* clang-format on */
      60           3 : }
      61             : 
      62             : void *
      63             : fd_bank_hash_cmp_new( void * mem );
      64             : 
      65             : fd_bank_hash_cmp_t *
      66             : fd_bank_hash_cmp_join( void * bank_hash_cmp );
      67             : 
      68             : void *
      69             : fd_bank_hash_cmp_leave( fd_bank_hash_cmp_t const * bank_hash_cmp );
      70             : 
      71             : void *
      72             : fd_bank_hash_cmp_delete( void * bank_hash_cmp );
      73             : 
      74             : void
      75             : fd_bank_hash_cmp_lock( fd_bank_hash_cmp_t * bank_hash_cmp );
      76             : 
      77             : void
      78             : fd_bank_hash_cmp_unlock( fd_bank_hash_cmp_t * bank_hash_cmp );
      79             : 
      80             : void
      81             : fd_bank_hash_cmp_insert( fd_bank_hash_cmp_t * bank_hash_cmp,
      82             :                          ulong                slot,
      83             :                          fd_hash_t const *    hash,
      84             :                          int                  ours,
      85             :                          ulong                stake );
      86             : 
      87             : /* Returns 1 on bank hash match (caller should move watermark forward),
      88             :           -1 on mismatch
      89             :            0 if we weren't able to compare yet */
      90             : int
      91             : fd_bank_hash_cmp_check( fd_bank_hash_cmp_t * bank_hash_cmp, ulong slot );
      92             : 
      93             : FD_PROTOTYPES_END
      94             : 
      95             : #endif /* HEADER_fd_src_flamenco_runtime_fd_bank_hash_cmp_h */

Generated by: LCOV version 1.14