Line data Source code
1 : #include "fd_accdb_topo.h" 2 : #include "../flamenco/accdb/fd_accdb_impl_v1.h" 3 : #include "../flamenco/accdb/fd_accdb_impl_v2.h" 4 : #include "../flamenco/progcache/fd_progcache_user.h" 5 : #include "../util/pod/fd_pod.h" 6 : 7 : void 8 : fd_accdb_init_from_topo( fd_accdb_user_t * accdb, 9 : fd_topo_t const * topo, 10 : fd_topo_tile_t const * tile, 11 0 : ulong max_depth ) { 12 0 : ulong funk_obj_id; 13 0 : ulong locks_obj_id; 14 0 : FD_TEST( (funk_obj_id = fd_pod_query_ulong( topo->props, "funk", ULONG_MAX ))!=ULONG_MAX ); 15 0 : FD_TEST( (locks_obj_id = fd_pod_query_ulong( topo->props, "funk_locks", ULONG_MAX ))!=ULONG_MAX ); 16 0 : fd_topo_obj_t const * vinyl_data = fd_topo_find_tile_obj( topo, tile, "vinyl_data" ); 17 0 : if( !vinyl_data ) { 18 0 : FD_TEST( fd_accdb_user_v1_init( accdb, 19 0 : fd_topo_obj_laddr( topo, funk_obj_id ), 20 0 : fd_topo_obj_laddr( topo, locks_obj_id ), 21 0 : max_depth ) ); 22 0 : } else { 23 0 : fd_topo_obj_t const * vinyl_rq = fd_topo_find_tile_obj( topo, tile, "vinyl_rq" ); 24 0 : fd_topo_obj_t const * vinyl_req_pool = fd_topo_find_tile_obj( topo, tile, "vinyl_rpool" ); 25 0 : FD_TEST( fd_accdb_user_v2_init( accdb, 26 0 : fd_topo_obj_laddr( topo, funk_obj_id ), 27 0 : fd_topo_obj_laddr( topo, locks_obj_id ), 28 0 : fd_topo_obj_laddr( topo, vinyl_rq->id ), 29 0 : topo->workspaces[ vinyl_data->wksp_id ].wksp, 30 0 : fd_topo_obj_laddr( topo, vinyl_req_pool->id ), 31 0 : vinyl_rq->id, 32 0 : max_depth ) ); 33 0 : } 34 0 : } 35 : 36 : void 37 : fd_progcache_init_from_topo( fd_progcache_t * progcache, 38 : fd_topo_t const * topo, 39 : uchar * scratch, 40 0 : ulong scratch_sz ) { 41 0 : ulong funk_obj_id; 42 0 : FD_TEST( (funk_obj_id = fd_pod_query_ulong( topo->props, "progcache", ULONG_MAX ))!=ULONG_MAX ); 43 0 : FD_TEST( fd_progcache_join( progcache, 44 0 : fd_topo_obj_laddr( topo, funk_obj_id ), 45 0 : scratch, 46 0 : scratch_sz ) ); 47 0 : }