METHODDEF void error_exit (const char *msgtext) { trace_message(msgtext); /* report the error message */ (*emethods->free_all) (); /* clean up memory allocation & temp files */ longjmp(setjmp_buffer, 1); /* return control to outer routine */ }
void add_trace(struct io *iop) { if (iop->t.action & BLK_TC_ACT(BLK_TC_NOTIFY)) { if (iop->t.action == BLK_TN_PROCESS) { if (iop->t.pid == 0) process_alloc(0, "kernel"); else { char *slash = strchr(iop->pdu, '/'); if (slash) *slash = '\0'; process_alloc(iop->t.pid, iop->pdu); } } else if (iop->t.action == BLK_TN_MESSAGE) trace_message(iop); io_release(iop); } else if (iop->t.action & BLK_TC_ACT(BLK_TC_PC)) { io_release(iop); } else { if (time_bounded) { if (BIT_TIME(iop->t.time) < t_astart) { io_release(iop); return; } else if (BIT_TIME(iop->t.time) > t_aend) { io_release(iop); done = 1; return; } } __add_trace(iop); } }
METHODDEF void error_exit (const char *msgtext) { trace_message(msgtext); /* report the error message */ bail_out(-1); }