From 4503e19601635059d2e4e8f7651f9b4b168a6e7a Mon Sep 17 00:00:00 2001 From: Bryan Ward Date: Thu, 18 Apr 2013 16:12:24 -0400 Subject: DGL support. --- gen/__init__.py | 1 + gen/edf_generators.py | 24 ++++++++++++++++++++++++ gen/generator.py | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/gen/__init__.py b/gen/__init__.py index 8c60b46..1798d57 100644 --- a/gen/__init__.py +++ b/gen/__init__.py @@ -4,3 +4,4 @@ import edf_generators as edf gen.register_generator("G-EDF", edf.GedfGenerator) gen.register_generator("P-EDF", edf.PedfGenerator) gen.register_generator("C-EDF", edf.CedfGenerator) +gen.register_generator("P-EDF-DGL", edf.PedfDglGenerator) diff --git a/gen/edf_generators.py b/gen/edf_generators.py index 3f05b76..1b7bb95 100644 --- a/gen/edf_generators.py +++ b/gen/edf_generators.py @@ -7,6 +7,8 @@ TP_TBASE = """#for $t in $task_set TP_GLOB_TASK = TP_TBASE.format("") TP_PART_TASK = TP_TBASE.format("-p $t.cpu") +TP_DGL_TASK = TP_TBASE.format("dglspin -r $t.mask -p $t.cpu") + class EdfGenerator(gen.Generator): '''Creates sporadic task sets with the most common Litmus options.''' def __init__(self, scheduler, templates, options, params): @@ -74,3 +76,25 @@ class GedfGenerator(EdfGenerator): def __init__(self, params={}): super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK], [], params) + +class PedfDglGenerator(EdfGenerator): + NR_RESOURCES_OPTION = gen.GenOption('nr_resources', int, [8], + 'Number of resources.',) + NR_REQUESTED_OPTION = gen.GenOption('nr_requested', int, [2], + 'Number of resources requested.',) + + def __init__(self, params={}): + super(PedfDglGenerator, self).__init__("PSN-EDF", + [TP_DGL_TASK], [], params) + + + def _customize(self, taskset, exp_params): + start = 1 if exp_params['release_master'] else 0 + # Random partition for now: could do a smart partitioning + for t in taskset: + t.cpu = random.randint(start, exp_params['cpus'] - 1) + resources = random.sample(xrange(exp_params['nr_resources']), exp_params['nr_requested']) + t.mask = list('0'*10) + for r in resources: + t.mask[r] = '1' + t.mask = ''.join(t.mask) diff --git a/gen/generator.py b/gen/generator.py index f35a22b..bfda201 100644 --- a/gen/generator.py +++ b/gen/generator.py @@ -72,7 +72,7 @@ class Generator(object): config = get_config_option("RELEASE_MASTER") and True except: config = False - release_master = list(set([False, config])) + release_master = list(set([False, bool(config)])) return [GenOption('tasks', int, range(cpus, 5*cpus, cpus), -- cgit v1.2.2