diff options
-rw-r--r-- | gen/__init__.py | 1 | ||||
-rw-r--r-- | gen/edf_generators.py | 24 | ||||
-rw-r--r-- | gen/generator.py | 2 |
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 | |||
4 | gen.register_generator("G-EDF", edf.GedfGenerator) | 4 | gen.register_generator("G-EDF", edf.GedfGenerator) |
5 | gen.register_generator("P-EDF", edf.PedfGenerator) | 5 | gen.register_generator("P-EDF", edf.PedfGenerator) |
6 | gen.register_generator("C-EDF", edf.CedfGenerator) | 6 | gen.register_generator("C-EDF", edf.CedfGenerator) |
7 | 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 | |||
7 | TP_GLOB_TASK = TP_TBASE.format("") | 7 | TP_GLOB_TASK = TP_TBASE.format("") |
8 | TP_PART_TASK = TP_TBASE.format("-p $t.cpu") | 8 | TP_PART_TASK = TP_TBASE.format("-p $t.cpu") |
9 | 9 | ||
10 | TP_DGL_TASK = TP_TBASE.format("dglspin -r $t.mask -p $t.cpu") | ||
11 | |||
10 | class EdfGenerator(gen.Generator): | 12 | class 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 | |||
80 | class 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), |