LCOV - code coverage report
Current view: top level - disco/gui - fd_gui_gossip_bw.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 72 0.0 %
Date: 2026-10-22 18:10:43 Functions: 0 6 0.0 %

          Line data    Source code
       1             : #include "fd_gui_gossip_bw.h"
       2             : #include "../../tango/tempo/fd_tempo.h"
       3             : 
       4             : FD_FN_CONST ulong
       5           0 : fd_gui_gossip_bw_align( void ) {
       6           0 :   return FD_GUI_GOSSIP_BW_ALIGN;
       7           0 : }
       8             : 
       9             : FD_FN_CONST ulong
      10           0 : fd_gui_gossip_bw_footprint( void ) {
      11           0 :   ulong l = FD_LAYOUT_INIT;
      12           0 :   l = FD_LAYOUT_APPEND( l, FD_GUI_GOSSIP_BW_ALIGN,         sizeof(fd_gui_gossip_bw_t)                                     );
      13           0 :   l = FD_LAYOUT_APPEND( l, fd_gui_gossip_bw_map_align(), fd_gui_gossip_bw_map_footprint( FD_GUI_GOSSIP_BW_LG_SLOT_CNT ) );
      14           0 :   return FD_LAYOUT_FINI( l, FD_GUI_GOSSIP_BW_ALIGN );
      15           0 : }
      16             : 
      17             : void *
      18             : fd_gui_gossip_bw_new( void * shmem,
      19           0 :                       ulong  seed ) {
      20             : 
      21           0 :   if( FD_UNLIKELY( !shmem ) ) {
      22           0 :     FD_LOG_WARNING(( "NULL shmem" ));
      23           0 :     return NULL;
      24           0 :   }
      25             : 
      26           0 :   if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)shmem, fd_gui_gossip_bw_align() ) ) ) {
      27           0 :     FD_LOG_WARNING(( "misaligned shmem" ));
      28           0 :     return NULL;
      29           0 :   }
      30             : 
      31           0 :   FD_SCRATCH_ALLOC_INIT( l, shmem );
      32           0 :   fd_gui_gossip_bw_t * bw   = FD_SCRATCH_ALLOC_APPEND( l, FD_GUI_GOSSIP_BW_ALIGN,         sizeof(fd_gui_gossip_bw_t)                                     );
      33           0 :   void *               _map = FD_SCRATCH_ALLOC_APPEND( l, fd_gui_gossip_bw_map_align(), fd_gui_gossip_bw_map_footprint( FD_GUI_GOSSIP_BW_LG_SLOT_CNT ) );
      34           0 :   FD_TEST( FD_SCRATCH_ALLOC_FINI( l, FD_GUI_GOSSIP_BW_ALIGN )==(ulong)shmem+fd_gui_gossip_bw_footprint() );
      35             : 
      36           0 :   bw->flush_ticks = (long)((double)FD_GUI_GOSSIP_BW_FLUSH_NS*fd_tempo_tick_per_ns( NULL ));
      37           0 :   bw->deadline    = LONG_MAX;
      38           0 :   bw->map         = fd_gui_gossip_bw_map_join( fd_gui_gossip_bw_map_new( _map, FD_GUI_GOSSIP_BW_LG_SLOT_CNT, seed ) );
      39             : 
      40           0 :   FD_COMPILER_MFENCE();
      41           0 :   FD_VOLATILE( bw->magic ) = FD_GUI_GOSSIP_BW_MAGIC;
      42           0 :   FD_COMPILER_MFENCE();
      43             : 
      44           0 :   return shmem;
      45           0 : }
      46             : 
      47             : fd_gui_gossip_bw_t *
      48           0 : fd_gui_gossip_bw_join( void * shbw ) {
      49             : 
      50           0 :   if( FD_UNLIKELY( !shbw ) ) {
      51           0 :     FD_LOG_WARNING(( "NULL shbw" ));
      52           0 :     return NULL;
      53           0 :   }
      54             : 
      55           0 :   if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)shbw, fd_gui_gossip_bw_align() ) ) ) {
      56           0 :     FD_LOG_WARNING(( "misaligned shbw" ));
      57           0 :     return NULL;
      58           0 :   }
      59             : 
      60           0 :   fd_gui_gossip_bw_t * bw = (fd_gui_gossip_bw_t *)shbw;
      61           0 :   if( FD_UNLIKELY( bw->magic!=FD_GUI_GOSSIP_BW_MAGIC ) ) {
      62           0 :     FD_LOG_WARNING(( "bad magic" ));
      63           0 :     return NULL;
      64           0 :   }
      65             : 
      66           0 :   return bw;
      67           0 : }
      68             : 
      69             : void *
      70           0 : fd_gui_gossip_bw_leave( fd_gui_gossip_bw_t const * bw ) {
      71             : 
      72           0 :   if( FD_UNLIKELY( !bw ) ) {
      73           0 :     FD_LOG_WARNING(( "NULL bw" ));
      74           0 :     return NULL;
      75           0 :   }
      76             : 
      77           0 :   return (void *)bw;
      78           0 : }
      79             : 
      80             : void *
      81           0 : fd_gui_gossip_bw_delete( void * shbw ) {
      82             : 
      83           0 :   if( FD_UNLIKELY( !shbw ) ) {
      84           0 :     FD_LOG_WARNING(( "NULL shbw" ));
      85           0 :     return NULL;
      86           0 :   }
      87             : 
      88           0 :   if( FD_UNLIKELY( !fd_ulong_is_aligned( (ulong)shbw, fd_gui_gossip_bw_align() ) ) ) {
      89           0 :     FD_LOG_WARNING(( "misaligned shbw" ));
      90           0 :     return NULL;
      91           0 :   }
      92             : 
      93           0 :   fd_gui_gossip_bw_t * bw = (fd_gui_gossip_bw_t *)shbw;
      94           0 :   if( FD_UNLIKELY( bw->magic!=FD_GUI_GOSSIP_BW_MAGIC ) ) {
      95           0 :     FD_LOG_WARNING(( "bad magic" ));
      96           0 :     return NULL;
      97           0 :   }
      98             : 
      99           0 :   FD_COMPILER_MFENCE();
     100           0 :   FD_VOLATILE( bw->magic ) = 0UL;
     101           0 :   FD_COMPILER_MFENCE();
     102             : 
     103           0 :   return shbw;
     104           0 : }

Generated by: LCOV version 1.14