sim_exit.hh revision 9952:7437cc334df1
111828Sjason@lowepower.com/*
211482Sandreas.sandberg@arm.com * Copyright (c) 2003-2005 The Regents of The University of Michigan
311482Sandreas.sandberg@arm.com * All rights reserved.
411482Sandreas.sandberg@arm.com *
511482Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without
611482Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are
711482Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright
811482Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer;
911482Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright
1011482Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the
1111482Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution;
1211482Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its
1311482Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from
1411482Sandreas.sandberg@arm.com * this software without specific prior written permission.
1511482Sandreas.sandberg@arm.com *
1611482Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1711482Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1811482Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1911482Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2011482Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2111482Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2211482Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2311482Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2411482Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2511482Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2611482Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2711482Sandreas.sandberg@arm.com *
2811482Sandreas.sandberg@arm.com * Authors: Nathan Binkert
2911482Sandreas.sandberg@arm.com *          Steve Reinhardt
3011482Sandreas.sandberg@arm.com */
3111482Sandreas.sandberg@arm.com
3211482Sandreas.sandberg@arm.com#ifndef __SIM_EXIT_HH__
3311482Sandreas.sandberg@arm.com#define __SIM_EXIT_HH__
3411482Sandreas.sandberg@arm.com
3511482Sandreas.sandberg@arm.com#include <string>
3611482Sandreas.sandberg@arm.com
3711482Sandreas.sandberg@arm.com#include "base/types.hh"
3811482Sandreas.sandberg@arm.com#include "sim/core.hh"
3911482Sandreas.sandberg@arm.com
4012575Sgiacomo.travaglini@arm.com// forward declaration
4112575Sgiacomo.travaglini@arm.comclass Callback;
4211482Sandreas.sandberg@arm.comclass EventQueue;
4311482Sandreas.sandberg@arm.comclass SimLoopExitEvent;
4411482Sandreas.sandberg@arm.com
4511482Sandreas.sandberg@arm.com/// Register a callback to be called when Python exits.  Defined in
4611482Sandreas.sandberg@arm.com/// sim/main.cc.
4711482Sandreas.sandberg@arm.comvoid registerExitCallback(Callback *);
4811482Sandreas.sandberg@arm.com
4911482Sandreas.sandberg@arm.com/// Schedule an event to exit the simulation loop (returning to
5011482Sandreas.sandberg@arm.com/// Python) at the end of the current cycle (curTick()).  The message
5111482Sandreas.sandberg@arm.com/// and exit_code parameters are saved in the SimLoopExitEvent to
5211482Sandreas.sandberg@arm.com/// indicate why the exit occurred.
5311482Sandreas.sandberg@arm.comvoid exitSimLoop(const std::string &message, int exit_code = 0,
5411482Sandreas.sandberg@arm.com                 Tick when = curTick(), Tick repeat = 0,
5511482Sandreas.sandberg@arm.com                 bool serialize = false);
5611482Sandreas.sandberg@arm.com
5711482Sandreas.sandberg@arm.com#endif // __SIM_EXIT_HH__
5811482Sandreas.sandberg@arm.com