System object now exists for both fullsys and syscall emulation, as the
latter needs it so that Process objects can find the shared PhysicalMemory
for initialization.
Changes are incomplete: still need to fix up Process (& EioProcess) memory
initialization and syscall emulation code for new mem interface.
arch/alpha/alpha_linux_process.cc:
arch/alpha/alpha_linux_process.hh:
arch/alpha/alpha_tru64_process.cc:
arch/alpha/alpha_tru64_process.hh:
cpu/base.cc:
cpu/base.hh:
Take System argument in constructor.
cpu/exec_context.cc:
Take System argument in constructor.
Merge two constructors into a single one.
cpu/exec_context.hh:
Take System argument in constructor.
Merge two constructors into a single one.
Replace dummy translation with lookup in Process object's page table.
python/m5/objects/Process.py:
Add System parameter to Process object (& subobjects).
python/m5/objects/System.py:
Segregate full-system only Process parameters (most of them!).
sim/process.cc:
Take System argument in constructor.
Move initialization to startup() callback to occur after system & cpus
are initialized.
Generate ProxyMemory object to pass to loader for transparent
virtual page allocation.
sim/process.hh:
Take System argument in constructor.
Move initialization to startup() callback to occur after system & cpus
are initialized.
sim/system.cc:
sim/system.hh:
Enable System object for non-full-system too.
Basically involved putting most of the existing code
inside '#ifdef FULL_SYSTEM'.
Key thing needed for syscall emulation at this point is
the PhysicalMemory object (for Process initialization).
--HG--
extra : convert_revision : f0f34b47bd4f77b502191affd3d03b4d6d9bcdd8
19 lines
695 B
Python
19 lines
695 B
Python
from m5 import *
|
|
class Process(SimObject):
|
|
type = 'Process'
|
|
abstract = True
|
|
output = Param.String('cout', 'filename for stdout/stderr')
|
|
system = Param.System(Parent.any, "system process will run on")
|
|
|
|
class LiveProcess(Process):
|
|
type = 'LiveProcess'
|
|
executable = Param.String('', "executable (overrides cmd[0] if set)")
|
|
cmd = VectorParam.String("command line (executable plus arguments)")
|
|
env = VectorParam.String('', "environment settings")
|
|
input = Param.String('cin', "filename for stdin")
|
|
|
|
class EioProcess(Process):
|
|
type = 'EioProcess'
|
|
chkpt = Param.String('', "EIO checkpoint file name (optional)")
|
|
file = Param.String("EIO trace file name")
|