LCOV - code coverage report
Current view: top level - flamenco/runtime/program/vote - fd_vote_lockout.c (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 33 0.0 %
Date: 2026-01-27 05:09:45 Functions: 0 5 0.0 %

          Line data    Source code
       1             : #include "fd_vote_lockout.h"
       2             : #include "../fd_vote_program.h"
       3             : 
       4             : // https://github.com/anza-xyz/agave/blob/v2.0.1/sdk/program/src/vote/state/mod.rs#L104
       5             : ulong
       6           0 : fd_vote_lockout_get_lockout( fd_vote_lockout_t * self ) {
       7             :   /* Confirmation count can never be greater than MAX_LOCKOUT_HISTORY, preventing overflow.
       8             :      Although Agave does not consider overflow, we do for fuzzing conformance. */
       9           0 :   ulong confirmation_count = fd_ulong_min( self->confirmation_count, MAX_LOCKOUT_HISTORY );
      10           0 :   return 1UL<<confirmation_count;
      11           0 : }
      12             : 
      13             : // https://github.com/anza-xyz/agave/blob/v2.0.1/sdk/program/src/vote/state/mod.rs#L110
      14             : ulong
      15           0 : fd_vote_lockout_last_locked_out_slot( fd_vote_lockout_t * self ) {
      16           0 :   return fd_ulong_sat_add( self->slot, fd_vote_lockout_get_lockout( self ) );
      17           0 : }
      18             : 
      19             : // https://github.com/anza-xyz/agave/blob/v2.0.1/sdk/program/src/vote/state/mod.rs#L114
      20             : ulong
      21           0 : fd_vote_lockout_is_locked_out_at_slot( fd_vote_lockout_t * self, ulong slot ) {
      22           0 :   return fd_vote_lockout_last_locked_out_slot( self ) >= slot;
      23           0 : }
      24             : 
      25             : // https://github.com/anza-xyz/agave/blob/v2.0.1/sdk/program/src/vote/state/mod.rs#L122
      26             : void
      27           0 : fd_vote_lockout_increase_confirmation_count( fd_vote_lockout_t * self, uint by ) {
      28           0 :   self->confirmation_count = fd_uint_sat_add( self->confirmation_count, by );
      29           0 : }
      30             : 
      31             : fd_landed_vote_t *
      32             : fd_vote_lockout_landed_votes_from_lockouts( fd_vote_lockout_t * lockouts,
      33           0 :                                             uchar *             mem ) {
      34           0 :   if( !lockouts ) return NULL;
      35             : 
      36             :   /* Allocate MAX_LOCKOUT_HISTORY (sane case) by default.  In case the
      37             :      vote account is corrupt, allocate as many entries are needed. */
      38             : 
      39           0 :   ulong cnt = deq_fd_vote_lockout_t_cnt( lockouts );
      40           0 :         cnt = fd_ulong_max( cnt, MAX_LOCKOUT_HISTORY );
      41             : 
      42           0 :   fd_landed_vote_t * landed_votes = deq_fd_landed_vote_t_join( deq_fd_landed_vote_t_new( mem, cnt ) );
      43           0 :   if( FD_UNLIKELY( !landed_votes ) ) {
      44           0 :     FD_LOG_CRIT(( "failed to join landed votes" ));
      45           0 :   }
      46             : 
      47           0 :   for( deq_fd_vote_lockout_t_iter_t iter = deq_fd_vote_lockout_t_iter_init( lockouts );
      48           0 :        !deq_fd_vote_lockout_t_iter_done( lockouts, iter );
      49           0 :        iter = deq_fd_vote_lockout_t_iter_next( lockouts, iter ) ) {
      50           0 :     fd_vote_lockout_t const * ele = deq_fd_vote_lockout_t_iter_ele_const( lockouts, iter );
      51             : 
      52           0 :     fd_landed_vote_t * elem = deq_fd_landed_vote_t_push_tail_nocopy( landed_votes );
      53           0 :     fd_landed_vote_new( elem );
      54             : 
      55           0 :     elem->latency                    = 0;
      56           0 :     elem->lockout.slot               = ele->slot;
      57           0 :     elem->lockout.confirmation_count = ele->confirmation_count;
      58           0 :   }
      59             : 
      60           0 :   return landed_votes;
      61           0 : }

Generated by: LCOV version 1.14