25 struct SolverBackup_s {
26 pastix_int_t *task_ctrbcnt;
27 pastix_int_t *fanin_ctrbnbr;
28 pastix_int_t *fanin_prionum;
29 pastix_int_t *symbol_cblknum;
30 pastix_int_t symbol_nodenbr;
32 pastix_int_t fanincnt;
64 MALLOC_INTERN( b, 1, SolverBackup_t );
65 memset( b, 0,
sizeof(SolverBackup_t) );
69 Task *task = solvmtx->tasktab;
71 MALLOC_INTERN(b->task_ctrbcnt, solvmtx->tasknbr, pastix_int_t);
73 for (i=0; i<solvmtx->tasknbr; i++, task++)
75 b->task_ctrbcnt[i] = task->
ctrbcnt;
79 if (solvmtx->bloknbr) {
82 MALLOC_INTERN(b->symbol_cblknum, solvmtx->bloknbr, pastix_int_t);
84 for (i=0; i<solvmtx->bloknbr; i++, blok++) {
85 b->symbol_cblknum[i] = blok->
fcblknm;
89 b->symbol_nodenbr = solvmtx->nodenbr;
93 for (i=0; i<solvmtx->cblknbr; i++, cblk++)
99 b->recvcnt = solvmtx->recvcnt;
100 b->fanincnt = solvmtx->fanincnt;
141 const SolverBackup_t *b )
145 if ( solvmtx == NULL || b == NULL ) {
149 if ( solvmtx->restore == 0 ) {
154 if ( solvmtx->restore == 2 ) {
155 if (solvmtx->tasknbr)
157 Task *task = solvmtx->tasktab;
159 for (i=0; i<solvmtx->tasknbr; i++, task++)
161 task->
ctrbcnt = b->task_ctrbcnt[i];
166 if (solvmtx->bloknbr) {
169 for (i=0; i<solvmtx->bloknbr; i++, blok++) {
170 blok->
fcblknm = b->symbol_cblknum[i];
174 solvmtx->nodenbr = b->symbol_nodenbr;
176 if (solvmtx->cblknbr) {
179 for (i=0; i<solvmtx->cblknbr; i++, cblk++) {
184 solvmtx->recvcnt = b->recvcnt;
185 solvmtx->fanincnt = b->fanincnt;
211 memFree_null(b->task_ctrbcnt);
214 if (b->fanin_ctrbnbr)
216 memFree_null(b->fanin_ctrbnbr);
217 memFree_null(b->fanin_prionum);
220 if (b->symbol_cblknum) {
221 memFree_null(b->symbol_cblknum);