- /// Pointer to object representing the system this process is
- /// running on.
- System *system;
-
- // thread contexts associated with this process
- std::vector<ContextID> contextIds;
-
- // number of CPUs (esxec contexts, really) assigned to this process.
- unsigned int numCpus() { return contextIds.size(); }
-
- // record of blocked context
- struct WaitRec
- {
- Addr waitChan;
- ThreadContext *waitingContext;
-
- WaitRec(Addr chan, ThreadContext *ctx)
- : waitChan(chan), waitingContext(ctx)
- { }
- };
-
- // list of all blocked contexts
- std::list<WaitRec> waitList;
-
- Addr brk_point; // top of the data segment
-
- Addr stack_base; // stack segment base (highest address)
- unsigned stack_size; // initial stack size
- Addr stack_min; // lowest address accessed on the stack
-
- // The maximum size allowed for the stack.
- Addr max_stack_size;
-
- // addr to use for next stack region (for multithreaded apps)
- Addr next_thread_stack_base;
-
- // Base of region for mmaps (when user doesn't specify an address).
- Addr mmap_end;
-
- // Does mmap region grow upward or downward from mmap_end? Most
- // platforms grow downward, but a few (such as Alpha) grow upward
- // instead, so they can override thie method to return false.
- virtual bool mmapGrowsDown() const { return true; }
-
- // Base of region for nxm data
- Addr nxm_start;
- Addr nxm_end;
-
- Stats::Scalar num_syscalls; // number of syscalls executed
-
- protected:
- // constructor
- Process(ProcessParams *params);