LCOV - code coverage report
Current view: top level - flamenco/runtime - fd_runtime_public.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 67 0.0 %
Date: 2025-07-01 05:00:49 Functions: 0 5 0.0 %

          Line data    Source code
       1             : #include "fd_runtime_public.h"
       2             : 
       3             : FD_FN_CONST ulong
       4           0 : fd_runtime_public_align( void ) {
       5           0 :   return fd_ulong_max( alignof(fd_runtime_public_t), fd_spad_align() );
       6           0 : }
       7             : 
       8             : ulong
       9           0 : fd_runtime_public_footprint( ulong spad_mem_max ) {
      10           0 :   return FD_LAYOUT_FINI( FD_LAYOUT_APPEND( FD_LAYOUT_APPEND( FD_LAYOUT_INIT,
      11           0 :       alignof(fd_runtime_public_t), sizeof(fd_runtime_public_t) ),
      12           0 :       fd_spad_align(), fd_spad_footprint( spad_mem_max ) ),
      13           0 :       fd_runtime_public_align() );
      14           0 : }
      15             : 
      16             : fd_runtime_public_t *
      17           0 : fd_runtime_public_join( void * shmem ) {
      18           0 :   fd_runtime_public_t * pub = (fd_runtime_public_t *)shmem;
      19             : 
      20           0 :   if( FD_UNLIKELY( pub->magic!=FD_RUNTIME_PUBLIC_MAGIC ) ) {
      21           0 :     FD_LOG_WARNING(( "Bad Magic" ));
      22           0 :     return NULL;
      23           0 :   }
      24             : 
      25           0 :   if( FD_UNLIKELY( pub->runtime_spad_gaddr==0UL ) ) {
      26           0 :     FD_LOG_WARNING(( "Bad runtime spad allocation" ));
      27           0 :     return NULL;
      28           0 :   }
      29             : 
      30           0 :   fd_wksp_t * wksp = fd_wksp_containing( shmem );
      31           0 :   if( FD_UNLIKELY( !wksp ) ) {
      32           0 :     FD_LOG_WARNING(( "No wksp containing shmem found" ));
      33           0 :     return NULL;
      34           0 :   }
      35             : 
      36           0 :   return pub;
      37           0 : }
      38             : 
      39             : void *
      40             : fd_runtime_public_new( void * shmem,
      41           0 :                        ulong  spad_mem_max ) {
      42           0 :   fd_wksp_t * wksp = fd_wksp_containing( shmem );
      43           0 :   if( FD_UNLIKELY( !wksp ) ) {
      44           0 :     FD_LOG_WARNING(( "shmem is not part of a workspace" ));
      45           0 :     return NULL;
      46           0 :   }
      47             : 
      48           0 :   FD_SCRATCH_ALLOC_INIT( l, shmem );
      49           0 :   fd_runtime_public_t * this     = FD_SCRATCH_ALLOC_APPEND( l, fd_runtime_public_align(), sizeof(fd_runtime_public_t) );
      50           0 :   void *                spad_mem = FD_SCRATCH_ALLOC_APPEND( l, fd_spad_align(), fd_spad_footprint( spad_mem_max ) );
      51           0 :   FD_SCRATCH_ALLOC_FINI( l, fd_runtime_public_align() );
      52             : 
      53           0 :   fd_memset( this, 0, sizeof(fd_runtime_public_t) );
      54             : 
      55           0 :   if( FD_UNLIKELY( !fd_spad_new( spad_mem, spad_mem_max ) ) ) {
      56           0 :     FD_LOG_WARNING(( "Unable to create spad" ));
      57           0 :     return NULL;
      58           0 :   }
      59             : 
      60           0 :   this->runtime_spad_gaddr = fd_wksp_gaddr( wksp, spad_mem );
      61           0 :   if( FD_UNLIKELY( !this->runtime_spad_gaddr ) ) {
      62           0 :     FD_LOG_CRIT(( "fd_wksp_gaddr(%p) failed", spad_mem )); /* unreachable */
      63           0 :   }
      64             : 
      65           0 :   FD_COMPILER_MFENCE();
      66           0 :   this->magic = FD_RUNTIME_PUBLIC_MAGIC;
      67           0 :   FD_COMPILER_MFENCE();
      68             : 
      69           0 :   return shmem;
      70           0 : }
      71             : 
      72             : fd_spad_t *
      73           0 : fd_runtime_public_spad( fd_runtime_public_t const * runtime_public ) {
      74           0 :   if( FD_UNLIKELY( !runtime_public ) )  {
      75           0 :     FD_LOG_WARNING(( "NULL runtime_public" ));
      76           0 :     return NULL;
      77           0 :   }
      78             : 
      79           0 :   fd_wksp_t * wksp = fd_wksp_containing( runtime_public );
      80           0 :   if( FD_UNLIKELY( !wksp ) ) {
      81           0 :     FD_LOG_WARNING(( "runtime_public is not part of a wksp" ));
      82           0 :     return NULL;
      83           0 :   }
      84             : 
      85           0 :   void * spad_laddr = fd_wksp_laddr( wksp, runtime_public->runtime_spad_gaddr );
      86           0 :   if( FD_UNLIKELY( !spad_laddr ) ) {
      87           0 :     FD_LOG_CRIT(( "fd_wksp_laddr(%p,0x%lx) failed", (void *)wksp, runtime_public->runtime_spad_gaddr )); /* unreachable */
      88           0 :     return NULL;
      89           0 :   }
      90             : 
      91           0 :   return fd_spad_join( spad_laddr );
      92           0 : }

Generated by: LCOV version 1.14