aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gen/__init__.py1
-rw-r--r--gen/edf_generators.py24
-rw-r--r--gen/generator.py2
3 files changed, 26 insertions, 1 deletions
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
4gen.register_generator("G-EDF", edf.GedfGenerator) 4gen.register_generator("G-EDF", edf.GedfGenerator)
5gen.register_generator("P-EDF", edf.PedfGenerator) 5gen.register_generator("P-EDF", edf.PedfGenerator)
6gen.register_generator("C-EDF", edf.CedfGenerator) 6gen.register_generator("C-EDF", edf.CedfGenerator)
7gen.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
7TP_GLOB_TASK = TP_TBASE.format("") 7TP_GLOB_TASK = TP_TBASE.format("")
8TP_PART_TASK = TP_TBASE.format("-p $t.cpu") 8TP_PART_TASK = TP_TBASE.format("-p $t.cpu")
9 9
10TP_DGL_TASK = TP_TBASE.format("dglspin -r $t.mask -p $t.cpu")
11
10class EdfGenerator(gen.Generator): 12class EdfGenerator(gen.Generator):
11 '''Creates sporadic task sets with the most common Litmus options.''' 13 '''Creates sporadic task sets with the most common Litmus options.'''
12 def __init__(self, scheduler, templates, options, params): 14 def __init__(self, scheduler, templates, options, params):
@@ -74,3 +76,25 @@ class GedfGenerator(EdfGenerator):
74 def __init__(self, params={}): 76 def __init__(self, params={}):
75 super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK], 77 super(GedfGenerator, self).__init__("GSN-EDF", [TP_GLOB_TASK],
76 [], params) 78 [], params)
79
80class PedfDglGenerator(EdfGenerator):
81 NR_RESOURCES_OPTION = gen.GenOption('nr_resources', int, [8],
82 'Number of resources.',)
83 NR_REQUESTED_OPTION = gen.GenOption('nr_requested', int, [2],
84 'Number of resources requested.',)
85
86 def __init__(self, params={}):
87 super(PedfDglGenerator, self).__init__("PSN-EDF",
88 [TP_DGL_TASK], [], params)
89
90
91 def _customize(self, taskset, exp_params):
92 start = 1 if exp_params['release_master'] else 0
93 # Random partition for now: could do a smart partitioning
94 for t in taskset:
95 t.cpu = random.randint(start, exp_params['cpus'] - 1)
96 resources = random.sample(xrange(exp_params['nr_resources']), exp_params['nr_requested'])
97 t.mask = list('0'*10)
98 for r in resources:
99 t.mask[r] = '1'
100 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):
72 config = get_config_option("RELEASE_MASTER") and True 72 config = get_config_option("RELEASE_MASTER") and True
73 except: 73 except:
74 config = False 74 config = False
75 release_master = list(set([False, config])) 75 release_master = list(set([False, bool(config)]))
76 76
77 77
78 return [GenOption('tasks', int, range(cpus, 5*cpus, cpus), 78 return [GenOption('tasks', int, range(cpus, 5*cpus, cpus),