sim-se: Add prlimit system call
[gem5.git] / src / sim / ticked_object.cc
index 4cd0dc171fff62fbb7787bcb08ad32b516857279..1a04dc14f9f50cfbf3f30d0f8a490e65296f83d3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013-2014 ARM Limited
+ * Copyright (c) 2013-2014, 2017 ARM Limited
  * All rights reserved
  *
  * The license below extends only to copyright in the software and shall
@@ -46,7 +46,7 @@ Ticked::Ticked(ClockedObject &object_,
     Stats::Scalar *imported_num_cycles,
     Event::Priority priority) :
     object(object_),
-    event(*this, priority),
+    event([this]{ processClockEvent(); }, name(), false, priority),
     running(false),
     lastStopped(0),
     /* Allocate numCycles if an external stat wasn't passed in */
@@ -55,12 +55,22 @@ Ticked::Ticked(ClockedObject &object_,
         *numCyclesLocal))
 { }
 
+void
+Ticked::processClockEvent() {
+    ++tickCycles;
+    ++numCycles;
+    countCycles(Cycles(1));
+    evaluate();
+    if (running)
+        object.schedule(event, object.clockEdge(Cycles(1)));
+}
+
 void
 Ticked::regStats()
 {
     if (numCyclesLocal) {
         numCycles
-            .name(object.name() + ".tickCycles")
+            .name(object.name() + ".totalTickCycles")
             .desc("Number of cycles that the object ticked or was stopped");
     }
 
@@ -98,7 +108,7 @@ Ticked::unserialize(CheckpointIn &cp)
     lastStopped = Cycles(lastStoppedUint);
 }
 
-TickedObject::TickedObject(TickedObjectParams *params,
+TickedObject::TickedObject(const TickedObjectParams *params,
     Event::Priority priority) :
     ClockedObject(params),
     /* Make numCycles in Ticked */
@@ -109,6 +119,7 @@ void
 TickedObject::regStats()
 {
     Ticked::regStats();
+    ClockedObject::regStats();
 }
 
 void