summaryrefslogtreecommitdiffstats
path: root/src/sat/bsat
diff options
context:
space:
mode:
Diffstat (limited to 'src/sat/bsat')
-rw-r--r--src/sat/bsat/satSolver.c2
-rw-r--r--src/sat/bsat/satSolver.h4
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 )