Example #1
0
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++;
}
Example #2
0
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);
}
Example #3
0
/**
 * 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, "");
}