Expose debugBreakCycle through swig and get rid of
authorNathan Binkert <binkertn@umich.edu>
Mon, 13 Nov 2006 20:20:08 +0000 (12:20 -0800)
committerNathan Binkert <binkertn@umich.edu>
Mon, 13 Nov 2006 20:20:08 +0000 (12:20 -0800)
the Debug param context

--HG--
extra : convert_revision : 40e9dcfa9faedbe0c90a43f908f20a7c14ded6a4

src/SConscript
src/python/SConscript
src/python/m5/main.py
src/python/m5/objects/Root.py
src/python/swig/debug.i [new file with mode: 0644]
src/sim/debug.cc
src/sim/main.cc

index 385047f7fe7ddf67e6b3f461dedf8ddb5ba63e3c..9d54174ab9a1024a13aedcd821e766bac2c647fa 100644 (file)
@@ -129,6 +129,7 @@ base_sources = Split('''
 
         mem/cache/cache_builder.cc
 
+        python/swig/debug_wrap.cc
         python/swig/main_wrap.cc
 
        sim/builder.cc
index 5c351c32ab500408590f04924a2006a90481fc34..be6248bab9e797d41f9af8e3d664401720b96ae1 100644 (file)
@@ -98,11 +98,17 @@ pyzip_files.append('m5/defines.py')
 pyzip_files.append('m5/info.py')
 pyzip_files.append(join(env['ROOT'], 'util/pbs/jobfile.py'))
 
+env.Command(['swig/debug_wrap.cc', 'm5/internal/debug.py'],
+            'swig/debug.i',
+            '$SWIG $SWIGFLAGS -outdir ${TARGETS[1].dir} '
+            '-o ${TARGETS[0]} $SOURCES')
+
 env.Command(['swig/main_wrap.cc', 'm5/internal/main.py'],
             'swig/main.i',
             '$SWIG $SWIGFLAGS -outdir ${TARGETS[1].dir} '
             '-o ${TARGETS[0]} $SOURCES')
 
+pyzip_dep_files.append('m5/internal/debug.py')
 pyzip_dep_files.append('m5/internal/main.py')
 
 # Action function to build the zip archive.  Uses the PyZipFile module
index 1e224c0cf665e5b0e0041994aa062078f6e1c3e3..114c668a6a0b12340f9941292b5e0508209c4b20 100644 (file)
@@ -275,7 +275,8 @@ def main():
     objects.Statistics.text_file = options.stats_file
 
     # set debugging options
-    objects.Debug.break_cycles = options.debug_break
+    for when in options.debug_break:
+        internal.debug.schedBreakCycle(int(when))
 
     # set tracing options
     objects.Trace.flags = options.trace_flags
index 8e8d87f6d314ab06c6754a1d88135b778499a394..b6123f1926a36b2787fca6ba6e264a8d58bbc03a 100644 (file)
@@ -5,7 +5,6 @@ from Serialize import Statreset
 from Statistics import Statistics
 from Trace import Trace
 from ExeTrace import ExecutionTrace
-from Debug import Debug
 
 class Root(SimObject):
     type = 'Root'
@@ -22,4 +21,3 @@ class Root(SimObject):
     trace = Trace()
     exetrace = ExecutionTrace()
     serialize = Serialize()
-    debug = Debug()
diff --git a/src/python/swig/debug.i b/src/python/swig/debug.i
new file mode 100644 (file)
index 0000000..8da2974
--- /dev/null
@@ -0,0 +1,19 @@
+%module debug
+
+%{
+// include these files when compiling debug_wrap.cc
+#include "sim/host.hh"
+%}
+
+%include "stdint.i"
+%include "sim/host.hh"
+
+%inline %{
+extern void schedBreakCycle(Tick when);
+%}
+
+%wrapper %{
+// fix up module name to reflect the fact that it's inside the m5 package
+#undef SWIG_name
+#define SWIG_name "m5.internal._debug"
+%}
index be9566836feca90a0a864128e1a1dfd084eb111c..84ab1074d924916d6fb039e7d5cd0ecf4d1c246b 100644 (file)
@@ -93,46 +93,18 @@ DebugBreakEvent::description()
     return "debug break";
 }
 
-//
-// Parameter context for global debug options
-//
-class DebugContext : public ParamContext
-{
-  public:
-    DebugContext(const string &_iniSection)
-        : ParamContext(_iniSection) {}
-    void checkParams();
-};
-
-DebugContext debugParams("debug");
-
-VectorParam<Tick> break_cycles(&debugParams, "break_cycles",
-                                 "cycle(s) to create breakpoint events");
-
-void
-DebugContext::checkParams()
-{
-    if (break_cycles.isValid()) {
-        vector<Tick> &cycles = break_cycles;
-
-        vector<Tick>::iterator i = cycles.begin();
-        vector<Tick>::iterator end = cycles.end();
-
-        for (; i < end; ++i)
-            new DebugBreakEvent(&mainEventQueue, *i);
-    }
-}
-
 //
 // handy function to schedule DebugBreakEvent on main event queue
 // (callable from debugger)
 //
-void sched_break_cycle(Tick when)
+void
+schedBreakCycle(Tick when)
 {
     new DebugBreakEvent(&mainEventQueue, when);
 }
 
-void eventq_dump()
+void
+eventqDump()
 {
     mainEventQueue.dump();
 }
index 6037283a4c00e23075c204f26fea292e55e46c17..17209ac20c5e6807d8b9f80ea6f95e995da692fa 100644 (file)
@@ -119,6 +119,7 @@ abortHandler(int sigtype)
 
 extern "C" {
 void init_main();
+void init_debug();
 }
 
 int
@@ -157,8 +158,9 @@ main(int argc, char **argv)
     Py_Initialize();
     PySys_SetArgv(argc, argv);
 
-    // initialize SWIG 'm5.internal.main' module
+    // initialize SWIG modules
     init_main();
+    init_debug();
 
     PyRun_SimpleString("import m5.main");
     PyRun_SimpleString("m5.main.main()");