void tarjan_local_init (run_t *run, wctx_t *ctx) { ctx->local = RTmallocZero (sizeof (alg_local_t)); ctx->local->target = state_info_create (); // extend state_info with tarjan_state information state_info_add_simple (ctx->local->target, sizeof (uint32_t), &ctx->local->target_tarjan.index); state_info_add_simple (ctx->local->target, sizeof (uint32_t), &ctx->local->target_tarjan.lowlink); state_info_add_simple (ctx->state, sizeof (uint32_t), &ctx->local->state_tarjan.index); state_info_add_simple (ctx->state, sizeof (uint32_t), &ctx->local->state_tarjan.lowlink); size_t len = state_info_serialize_int_size (ctx->state); ctx->local->search_stack = dfs_stack_create (len); ctx->local->tarjan_stack = dfs_stack_create (len); ctx->local->cnt.scc_count = 0; ctx->local->cnt.tarjan_counter = 0; ctx->local->visited_states = fset_create (sizeof (ref_t), sizeof (raw_data_t), 10, dbs_size); #ifdef SEARCH_COMPLETE_GRAPH // provide the input file name to dlopen_setup dlopen_setup (files[0]); #endif (void) run; }
void timed_global_init (run_t *run, wctx_t *ctx) { if (PINS_POR) Abort ("POR not compatible with timed automata"); ctx->global = RTmallocZero (sizeof(ta_alg_global_t)); ta_alg_global_t *sm = (ta_alg_global_t *) ctx->global; // Extend state info with a lattice location state_info_add_simple (ctx->state, sizeof(lm_loc_t), &sm->lloc); state_info_add_simple (ctx->initial, sizeof(lm_loc_t), &sm->lloc); state_info_t *si_perm = permute_state_info(ctx->permute); state_info_add_simple (si_perm, sizeof(lm_loc_t), &sm->lloc); reach_global_setup (run, ctx); }