#include "mem/se_translating_port_proxy.hh"
#include "sim/fd_array.hh"
#include "sim/fd_entry.hh"
+#include "sim/mem_state.hh"
#include "sim/sim_object.hh"
struct ProcessParams;
class Process : public SimObject
{
public:
-
- struct MemState
- {
- Addr brkPoint;
- Addr stackBase;
- unsigned stackSize;
- Addr stackMin;
- Addr nextThreadStackBase;
- Addr mmapEnd;
-
- MemState()
- : brkPoint(0), stackBase(0), stackSize(0), stackMin(0),
- nextThreadStackBase(0), mmapEnd(0)
- { }
-
- MemState&
- operator=(const MemState &in)
- {
- if (this == &in)
- return *this;
-
- brkPoint = in.brkPoint;
- stackBase = in.stackBase;
- stackSize = in.stackSize;
- stackMin = in.stackMin;
- nextThreadStackBase = in.nextThreadStackBase;
- mmapEnd = in.mmapEnd;
- return *this;
- }
-
- void serialize(CheckpointOut &cp) const;
- void unserialize(CheckpointIn &cp);
- };
-
Process(ProcessParams *params, ObjectFile *obj_file);
void serialize(CheckpointOut &cp) const override;
void initState() override;
DrainState drain() override;
- void syscall(int64_t callnum, ThreadContext *tc, Fault *fault);
+ virtual void syscall(int64_t callnum, ThreadContext *tc, Fault *fault);
virtual TheISA::IntReg getSyscallArg(ThreadContext *tc, int &i) = 0;
virtual TheISA::IntReg getSyscallArg(ThreadContext *tc, int &i, int width);
virtual void setSyscallArg(ThreadContext *tc, int i,
* Find an emulated device driver.
*
* @param filename Name of the device (under /dev)
- * @return Pointer to driver object if found, else NULL
+ * @return Pointer to driver object if found, else nullptr
*/
EmulatedDriver *findDriver(std::string filename);
void replicatePage(Addr vaddr, Addr new_paddr, ThreadContext *old_tc,
ThreadContext *new_tc, bool alloc_page);
- void clone(ThreadContext *old_tc, ThreadContext *new_tc, Process *new_p,
- TheISA::IntReg flags);
+ virtual void clone(ThreadContext *old_tc, ThreadContext *new_tc,
+ Process *new_p, TheISA::IntReg flags);
// thread contexts associated with this process
std::vector<ContextID> contextIds;
std::shared_ptr<FDArray> fds;
bool *exitGroup;
-
- Addr maxStackSize;
- MemState *memState;
+ std::shared_ptr<MemState> memState;
/**
* Calls a futex wakeup at the address specified by this pointer when