コード例 #1
0
ファイル: shd-master.c プロジェクト: hotelzululima/shadow
void master_slaveFinishedCurrentWindow(Master* master, SimulationTime minNextEventTime) {
    MAGIC_ASSERT(master);
    utility_assert(minNextEventTime != SIMTIME_INVALID);

    /* TODO: once we get multiple slaves, we have to block them here
     * until they have all notified us that they are finished */

    /* update our detected min jump time */
    master->minJumpTime = master->nextMinJumpTime;

    /* update the next interval window based on next event times */
    SimulationTime newStart = minNextEventTime;
    SimulationTime newEnd = minNextEventTime + master_getMinTimeJump(master);

    /* update the new window end as one interval past the new window start,
     * making sure we dont run over the experiment end time */
    if(newEnd > master->endTime) {
        newEnd = master->endTime;
    }

    /* if we are done, make sure the workers know about it */
    if(newStart >= newEnd) {
        master_setKilled(master, TRUE);
    }

    /* finally, set the new values */
    master->executeWindowStart = newStart;
    master->executeWindowEnd = newEnd;
}
コード例 #2
0
ファイル: shd-slave.c プロジェクト: 4sp1r3/shadow
void slave_setKilled(Slave* slave, gboolean isKilled) {
    MAGIC_ASSERT(slave);
    master_setKilled(slave->master, isKilled);
}