diff --git a/SConstruct b/SConstruct index bd26e4552e..e08c2984e5 100755 --- a/SConstruct +++ b/SConstruct @@ -447,10 +447,6 @@ for variant_path in variant_paths: error('gcc version 7 or newer required.\n' 'Installed version:', env['CXXVERSION']) - with gem5_scons.Configure(env) as conf: - # This warning has a false positive in the systemc in g++ 11.1. - conf.CheckCxxFlag('-Wno-free-nonheap-object') - # Add the appropriate Link-Time Optimization (LTO) flags if # `--with-lto` is set. if GetOption('with_lto'): diff --git a/src/sim/eventq.cc b/src/sim/eventq.cc index 66d03854ac..23ca2f6f4e 100644 --- a/src/sim/eventq.cc +++ b/src/sim/eventq.cc @@ -108,6 +108,32 @@ Event::insertBefore(Event *event, Event *curr) return event; } +void +Event::acquire() +{ + if (flags.isSet(Event::Managed)) + acquireImpl(); +} + +void +Event::release() +{ + if (flags.isSet(Event::Managed)) + releaseImpl(); +} + +void +Event::acquireImpl() +{ +} + +void +Event::releaseImpl() +{ + if (!scheduled()) + delete this; +} + void EventQueue::insert(Event *event) { diff --git a/src/sim/eventq.hh b/src/sim/eventq.hh index cd5d285f93..62495bf86d 100644 --- a/src/sim/eventq.hh +++ b/src/sim/eventq.hh @@ -381,26 +381,16 @@ class Event : public EventBase, public Serializable /** * Managed event scheduled and being held in the event queue. */ - void acquire() - { - if (flags.isSet(Event::Managed)) - acquireImpl(); - } + void acquire(); /** * Managed event removed from the event queue. */ - void release() { - if (flags.isSet(Event::Managed)) - releaseImpl(); - } + void release(); - virtual void acquireImpl() {} + virtual void acquireImpl(); - virtual void releaseImpl() { - if (!scheduled()) - delete this; - } + virtual void releaseImpl(); /** @} */ diff --git a/src/systemc/core/SConscript b/src/systemc/core/SConscript index 2b8811187c..c7c9dbb40b 100644 --- a/src/systemc/core/SConscript +++ b/src/systemc/core/SConscript @@ -40,6 +40,7 @@ if env['CONF']['USE_SYSTEMC']: Source('port.cc') Source('process.cc') Source('sched_event.cc') + Source('scheduler.cc') Source('sensitivity.cc') Source('time.cc') @@ -75,7 +76,4 @@ if env['CONF']['USE_SYSTEMC']: # Disable the false positive warning for the event members of the scheduler. with gem5_scons.Configure(env) as conf: flag = '-Wno-free-nonheap-object' - append = {} - if conf.CheckCxxFlag(flag, autoadd=False): - append['CCFLAGS'] = [flag] - Source('scheduler.cc', append=append) + conf.CheckLinkFlag(flag)