Merge pull request #326 from Deixx/with-traits
Get all cache modes which traits include those provided as argument
This commit is contained in:
commit
d568bec1e3
@ -1,12 +1,13 @@
|
|||||||
#
|
#
|
||||||
# Copyright(c) 2019 Intel Corporation
|
# Copyright(c) 2019-2020 Intel Corporation
|
||||||
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
# SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
#
|
#
|
||||||
|
|
||||||
from aenum import Enum, IntFlag
|
from aenum import Enum, IntFlag
|
||||||
from test_utils.size import Size, Unit
|
|
||||||
from attotime import attotimedelta
|
from attotime import attotimedelta
|
||||||
|
|
||||||
|
from test_utils.size import Size, Unit
|
||||||
|
|
||||||
|
|
||||||
class CacheLineSize(Enum):
|
class CacheLineSize(Enum):
|
||||||
LINE_4KiB = Size(4, Unit.KibiByte)
|
LINE_4KiB = Size(4, Unit.KibiByte)
|
||||||
@ -20,6 +21,12 @@ class CacheLineSize(Enum):
|
|||||||
return int(self.value.get_value())
|
return int(self.value.get_value())
|
||||||
|
|
||||||
|
|
||||||
|
class CacheModeTrait(IntFlag):
|
||||||
|
InsertWrite = 1
|
||||||
|
InsertRead = 2
|
||||||
|
LazyFlush = 4
|
||||||
|
|
||||||
|
|
||||||
class CacheMode(Enum):
|
class CacheMode(Enum):
|
||||||
WT = "Write-Through"
|
WT = "Write-Through"
|
||||||
WB = "Write-Back"
|
WB = "Write-Back"
|
||||||
@ -34,7 +41,7 @@ class CacheMode(Enum):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def get_traits(cache_mode):
|
def get_traits(cache_mode):
|
||||||
if cache_mode == CacheMode.PT:
|
if cache_mode == CacheMode.PT:
|
||||||
return 0
|
return CacheModeTrait(0)
|
||||||
elif cache_mode == CacheMode.WT:
|
elif cache_mode == CacheMode.WT:
|
||||||
return CacheModeTrait.InsertRead | CacheModeTrait.InsertWrite
|
return CacheModeTrait.InsertRead | CacheModeTrait.InsertWrite
|
||||||
elif cache_mode == CacheMode.WB:
|
elif cache_mode == CacheMode.WB:
|
||||||
@ -44,11 +51,11 @@ class CacheMode(Enum):
|
|||||||
elif cache_mode == CacheMode.WA:
|
elif cache_mode == CacheMode.WA:
|
||||||
return CacheModeTrait.InsertRead
|
return CacheModeTrait.InsertRead
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
class CacheModeTrait(IntFlag):
|
def with_traits(flags: CacheModeTrait):
|
||||||
InsertWrite = 1
|
return [
|
||||||
InsertRead = 2
|
m for m in CacheMode if all(map(lambda t: t in CacheMode.get_traits(m), flags))
|
||||||
LazyFlush = 4
|
]
|
||||||
|
|
||||||
|
|
||||||
class SeqCutOffPolicy(Enum):
|
class SeqCutOffPolicy(Enum):
|
||||||
|
Loading…
Reference in New Issue
Block a user