misc: Bugfix for Freezing Terminal in SystemC Simulation
authorAbdul Mutaal Ahmad <abdul.mutaal@gmail.com>
Tue, 15 Sep 2015 13:14:07 +0000 (08:14 -0500)
committerAbdul Mutaal Ahmad <abdul.mutaal@gmail.com>
Tue, 15 Sep 2015 13:14:07 +0000 (08:14 -0500)
If the terminal was used in the SystemC or TLM simulations the simulation gets
in a deadlock state. This is because of the Event queue gets locked while
servicing the async events leading to event queue deadlock. This was solved by
locking the queue at the beginning of service of async events.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

util/systemc/sc_module.cc

index a47df8194be95d6935c8e0bbc5b0e55d4eb4a3cb..71b3b5fbbced4e99445e77a5a9d6a5209f6a4f92 100644 (file)
@@ -140,6 +140,7 @@ void
 Module::serviceAsyncEvent()
 {
     EventQueue *eventq = getEventQueue(0);
+    std::lock_guard<EventQueue> lock(*eventq);
 
     assert(async_event);