diff --git a/generator/analysis/SystemGraph.py b/generator/analysis/SystemGraph.py index e3084801589296943d91f86a4d7603c60710c4fa..86ac7b3c33438cee9c425ce83e7252812d07a33c 100644 --- a/generator/analysis/SystemGraph.py +++ b/generator/analysis/SystemGraph.py @@ -74,7 +74,7 @@ class SystemGraph(GraphObject, PassManager): @property def subtasks(self): - return self._subtasks.values() + return list(sorted(self._subtasks.values(), key=lambda x: x.name)) @property def user_subtasks(self): diff --git a/generator/coder/syscall_full.py b/generator/coder/syscall_full.py index 6fd2d860abdd3da1ab31dfaab8837f6ba7020692..41899a049f1775a0f2a9530acec647f9859c48aa 100644 --- a/generator/coder/syscall_full.py +++ b/generator/coder/syscall_full.py @@ -5,6 +5,8 @@ from .elements import Statement, Comment, Function, VariableDefinition, Block, I CodeTemplate, FunctionDeclaration from generator.transform.GenerateAssertions import AssertionType from generator.analysis.Function import Function as GraphFunction +from generator.analysis.Resource import Resource + from generator.tools import panic @@ -258,6 +260,8 @@ class FullSystemCalls(BaseCoder): def ReleaseResource(self, abb, userspace, kernelspace): next_prio = abb.definite_after(E.task_level).dynamic_priority + if not abb.subtask.conf.preemptable: + next_prio = self.system_graph.get(Resource, "RES_SCHEDULER").conf.static_priority self.call(kernelspace, "scheduler_.ReleaseResource_impl", "void",