static inline void ta_explore_state (wctx_t *ctx) { size_t count = 0; if (ctx->counters->level_cur >= max_level) return; invariant_detect (ctx); count = permute_trans (ctx->permute, ctx->state, NONBLOCKING ? ta_handle_nb : ta_handle, ctx); deadlock_detect (ctx, count); run_maybe_report1 (ctx->run, ctx->counters, ""); ctx->counters->explored++; }
static inline void endfs_explore_state_blue (wctx_t *ctx) { alg_local_t *loc = ctx->local; work_counter_t *cnt = ctx->counters; cndfs_alg_local_t *cloc = (cndfs_alg_local_t *) ctx->local; cloc->successors = NONEC; dfs_stack_enter (loc->stack); increase_level (ctx->counters); cnt->trans += permute_trans (ctx->permute, ctx->state, endfs_handle_blue, ctx); check_counter_example (ctx, loc->stack, true); cnt->explored++; run_maybe_report1 (ctx->run, cnt, "[Blue] "); set_proviso_stack (ctx, loc, cloc); }
/** * make a stackframe on search_stack and handle the successors of ctx->state */ static inline void explore_state (wctx_t *ctx) { alg_local_t *loc = ctx->local; dfs_stack_enter (loc->search_stack); increase_level (ctx->counters); #ifdef SEARCH_COMPLETE_GRAPH // bypass the pins interface by directly handling the successors int ref_arr[2]; ref_arr[0] = (int) ctx->state->ref; dlopen_next_state (NULL, 0, ref_arr, permute_complete, ctx); #else permute_trans (ctx->permute, ctx->state, tarjan_handle, ctx); #endif ctx->counters->explored++; run_maybe_report1 (ctx->run, (work_counter_t *) ctx->counters, ""); }