mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-09 07:39:35 -04:00
selftests/damon/_damon_sysfs: support DAMOS action dests setup
_damon_sysfs.py contains code for test-purpose DAMON sysfs interface control. Add support of DAMOS action destinations setup for more tests. Link: https://lkml.kernel.org/r/20250720171652.92309-7-sj@kernel.org Signed-off-by: SeongJae Park <sj@kernel.org> Cc: Shuah Khan <shuah@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
229b0af664
commit
fca6ddf44d
@@ -319,6 +319,52 @@ class DamosFilters:
|
||||
return err
|
||||
return None
|
||||
|
||||
class DamosDest:
|
||||
id = None
|
||||
weight = None
|
||||
idx = None
|
||||
dests = None # owner dests
|
||||
|
||||
def __init__(self, id=0, weight=0):
|
||||
self.id = id
|
||||
self.weight = weight
|
||||
|
||||
def sysfs_dir(self):
|
||||
return os.path.join(self.dests.sysfs_dir(), '%d' % self.idx)
|
||||
|
||||
def stage(self):
|
||||
err = write_file(os.path.join(self.sysfs_dir(), 'id'), self.id)
|
||||
if err is not None:
|
||||
return err
|
||||
err = write_file(os.path.join(self.sysfs_dir(), 'weight'), self.weight)
|
||||
if err is not None:
|
||||
return err
|
||||
return None
|
||||
|
||||
class DamosDests:
|
||||
dests = None
|
||||
scheme = None # owner scheme
|
||||
|
||||
def __init__(self, dests=[]):
|
||||
self.dests = dests
|
||||
for idx, dest in enumerate(self.dests):
|
||||
dest.idx = idx
|
||||
dest.dests = self
|
||||
|
||||
def sysfs_dir(self):
|
||||
return os.path.join(self.scheme.sysfs_dir(), 'dests')
|
||||
|
||||
def stage(self):
|
||||
err = write_file(os.path.join(self.sysfs_dir(), 'nr_dests'),
|
||||
len(self.dests))
|
||||
if err is not None:
|
||||
return err
|
||||
for dest in self.dests:
|
||||
err = dest.stage()
|
||||
if err is not None:
|
||||
return err
|
||||
return None
|
||||
|
||||
class DamosStats:
|
||||
nr_tried = None
|
||||
sz_tried = None
|
||||
@@ -349,6 +395,7 @@ class Damos:
|
||||
ops_filters = None
|
||||
filters = None
|
||||
apply_interval_us = None
|
||||
dests = None
|
||||
idx = None
|
||||
context = None
|
||||
tried_bytes = None
|
||||
@@ -358,7 +405,7 @@ class Damos:
|
||||
def __init__(self, action='stat', access_pattern=DamosAccessPattern(),
|
||||
quota=DamosQuota(), watermarks=DamosWatermarks(),
|
||||
core_filters=[], ops_filters=[], filters=[],
|
||||
apply_interval_us=0):
|
||||
dests=DamosDests(), apply_interval_us=0):
|
||||
self.action = action
|
||||
self.access_pattern = access_pattern
|
||||
self.access_pattern.scheme = self
|
||||
@@ -376,6 +423,9 @@ class Damos:
|
||||
self.filters = DamosFilters(name='filters', filters=filters)
|
||||
self.filters.scheme = self
|
||||
|
||||
self.dests = dests
|
||||
self.dests.scheme = self
|
||||
|
||||
self.apply_interval_us = apply_interval_us
|
||||
|
||||
def sysfs_dir(self):
|
||||
@@ -412,6 +462,10 @@ class Damos:
|
||||
if err is not None:
|
||||
return err
|
||||
|
||||
err = self.dests.stage()
|
||||
if err is not None:
|
||||
return err
|
||||
|
||||
class DamonTarget:
|
||||
pid = None
|
||||
# todo: Support target regions if test is made
|
||||
|
||||
Reference in New Issue
Block a user