/** * Start the race. */ void RelayRace::run(void) { trace::Call *call; call = parser.parse_call(); if (!call) { /* Nothing to do */ return; } /* If the user wants to loop we need to get a bookmark target. We * usually get this after replaying a call that ends a frame, but * for a trace that has only one frame we need to get it at the * beginning. */ if (loopOnFinish) { parser.getBookmark(lastFrameStart); } RelayRunner *foreRunner = getForeRunner(); if (call->thread_id == 0) { /* We are the forerunner thread, so no need to pass baton */ foreRunner->baton = call; } else { passBaton(call); } /* Start the forerunner thread */ foreRunner->runRace(); }
/** * Start the race. */ void RelayRace::run(void) { trace::Call *call; call = parser->parse_call(); if (!call) { /* Nothing to do */ return; } RelayRunner *foreRunner = getForeRunner(); if (call->thread_id == 0) { /* We are the forerunner thread, so no need to pass baton */ foreRunner->baton = call; } else { passBaton(call); } /* Start the forerunner thread */ foreRunner->runRace(); }