diff options
Diffstat (limited to 'src/sat/bsat')
-rw-r--r-- | src/sat/bsat/satSolver.c | 2 | ||||
-rw-r--r-- | src/sat/bsat/satSolver.h | 4 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/sat/bsat/satSolver.c b/src/sat/bsat/satSolver.c index fe7e65fe..787626d6 100644 --- a/src/sat/bsat/satSolver.c +++ b/src/sat/bsat/satSolver.c @@ -1956,6 +1956,8 @@ int sat_solver_solve_internal(sat_solver* s) break; if ( s->nRuntimeLimit && Abc_Clock() > s->nRuntimeLimit ) break; + if ( s->pFuncStop && s->pFuncStop(s->RunId) ) + break; } if (s->verbosity >= 1) printf("==============================================================================\n"); diff --git a/src/sat/bsat/satSolver.h b/src/sat/bsat/satSolver.h index 5191b2cd..e8a350ca 100644 --- a/src/sat/bsat/satSolver.h +++ b/src/sat/bsat/satSolver.h @@ -196,6 +196,10 @@ struct sat_solver_t // CNF loading void * pCnfMan; // external CNF manager int(*pCnfFunc)(void * p, int); // external callback + + // termination callback + int RunId; // SAT id in this run + int(*pFuncStop)(int); // callback to terminate }; static inline clause * clause_read( sat_solver * s, cla h ) |