dev,cpu: Make two very generic enums ScopedEnums.
authorGabe Black <gabe.black@gmail.com>
Mon, 20 Apr 2020 14:49:19 +0000 (07:49 -0700)
committerGabe Black <gabeblack@google.com>
Mon, 20 Apr 2020 22:49:11 +0000 (22:49 +0000)
Two python Enum parameter types had some very generic elements which
both include one named "none". When headers for both are included that
creates a conflict which breaks the build. Enums which such extremely
generic names need to be scoped so that they don't invite these sorts
of collisions.

This change converts them from Enum to ScopedEnum in python, and also
makes a few small changes to where they're used in c++ to match.

Issue-on: https://gem5.atlassian.net/browse/GEM5-447

Change-Id: Ibda6e6cfcd700a618f8c68d174f33ec1e178b9ac
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/27950
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/cpu/testers/traffic_gen/BaseTrafficGen.py
src/cpu/testers/traffic_gen/stream_gen.cc
src/dev/serial/Terminal.py
src/dev/serial/terminal.cc

index f9ed64b3072ffdbd5b15e92228e2a13a39f0b9fd..0dda4ecfe1d23c07e69b94b6dc5cf05a13dcdc9e 100644 (file)
@@ -42,7 +42,7 @@ from m5.objects.ClockedObject import ClockedObject
 # and are meant to initialize the stream and substream IDs for
 # every memory request, regardless of how the packet has been
 # generated (Random, Linear, Trace etc)
-class StreamGenType(Enum): vals = [ 'none', 'fixed', 'random' ]
+class StreamGenType(ScopedEnum): vals = [ 'none', 'fixed', 'random' ]
 
 # The traffic generator is a master module that generates stimuli for
 # the memory system, based on a collection of simple behaviours that
index d8b9263fe88d026297bc7e4975134c096c170337..1f65d9af3670c4ebde48cc4fcdc521263d60cf92 100644 (file)
@@ -43,11 +43,11 @@ StreamGen*
 StreamGen::create(const BaseTrafficGenParams *p)
 {
     switch (p->stream_gen) {
-      case Enums::fixed:
+      case StreamGenType::fixed:
         return new FixedStreamGen(p);
-      case Enums::random:
+      case StreamGenType::random:
         return new RandomStreamGen(p);
-      case Enums::none:
+      case StreamGenType::none:
       default:
         return nullptr;
     }
index 6dabdcddbd23460af1a6b1e0da35a6f4a785db19..49d5737627e4e5ff4cb6a48ef273daf261584c12 100644 (file)
@@ -42,7 +42,8 @@ from m5.proxy import *
 
 from m5.objects.Serial import SerialDevice
 
-class TerminalDump(Enum): vals = ["none", "stdoutput", "stderror", "file"]
+class TerminalDump(ScopedEnum): vals = [
+        "none", "stdoutput", "stderror", "file"]
 
 class Terminal(SerialDevice):
     type = 'Terminal'
index 45c0bc6ece4fe6d9988b13e6aa154d0214199af7..7cfc6d745b01e2992c3597396cc1406df46370fd 100644 (file)
@@ -146,13 +146,13 @@ OutputStream *
 Terminal::terminalDump(const TerminalParams* p)
 {
     switch (p->outfile) {
-      case Enums::TerminalDump::none:
+      case TerminalDump::none:
         return nullptr;
-      case Enums::TerminalDump::stdoutput:
+      case TerminalDump::stdoutput:
         return simout.findOrCreate("stdout");
-      case Enums::TerminalDump::stderror:
+      case TerminalDump::stderror:
         return simout.findOrCreate("stderr");
-      case Enums::TerminalDump::file:
+      case TerminalDump::file:
         return simout.findOrCreate(p->name);
       default:
         panic("Invalid option\n");