Line data Source code
1 : #include "fd_vinyl_admin.h" 2 : 3 : ulong 4 0 : fd_vinyl_admin_align( void ) { 5 0 : return alignof(fd_vinyl_admin_t); 6 0 : } 7 : 8 : ulong 9 0 : fd_vinyl_admin_footprint( void ){ 10 0 : return sizeof(fd_vinyl_admin_t); 11 0 : } 12 : 13 : void * 14 0 : fd_vinyl_admin_new( void * mem ) { 15 0 : fd_vinyl_admin_t * admin = (fd_vinyl_admin_t *)mem; 16 : 17 0 : memset( admin, 0UL, sizeof(fd_vinyl_admin_t) ); 18 : 19 0 : admin->magic = FD_VINYL_ADMIN_MAGIC; 20 : 21 0 : fd_rwlock_new( &admin->lock ); 22 : 23 : /* verbose initialization */ 24 0 : admin->status = FD_VINYL_ADMIN_STATUS_INIT_PENDING; 25 : 26 0 : return (void *)admin; 27 0 : } 28 : 29 : fd_vinyl_admin_t * 30 0 : fd_vinyl_admin_join( void * _admin ) { 31 0 : fd_vinyl_admin_t * admin = (fd_vinyl_admin_t *)_admin; 32 0 : if( FD_UNLIKELY( admin->magic!=FD_VINYL_ADMIN_MAGIC ) ) return NULL; 33 0 : return admin; 34 0 : } 35 : 36 : void * 37 0 : fd_vinyl_admin_leave( fd_vinyl_admin_t * _admin ) { 38 0 : return (void *)_admin; 39 0 : } 40 : 41 : void * 42 0 : fd_vinyl_admin_delete( void * _admin ) { 43 0 : return (void *)_admin; 44 0 : } 45 : 46 : ulong 47 0 : fd_vinyl_admin_ulong_query( ulong const * _field ) { 48 0 : FD_COMPILER_MFENCE(); 49 0 : ulong field = FD_VOLATILE_CONST( *_field ); 50 0 : FD_COMPILER_MFENCE(); 51 0 : return field; 52 0 : } 53 : 54 : void 55 : fd_vinyl_admin_ulong_update( ulong * _field, 56 0 : ulong value ) { 57 0 : FD_COMPILER_MFENCE(); 58 0 : FD_VOLATILE( *_field ) = value; 59 0 : FD_COMPILER_MFENCE(); 60 0 : }