Split out 'find next buildable task' into a separate generator function
It needs to be a generator, so scheduler subclasses have the option to skip buildable tasks and return a later one. (Bitbake rev: a8c61e41bc6277222e4cde667ad0b24bd1597aa0) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
This commit is contained in:
parent
0d1034d2ea
commit
ebe3850bee
|
@ -92,17 +92,23 @@ class RunQueueScheduler(object):
|
|||
self.prio_map = []
|
||||
self.prio_map.extend(range(numTasks))
|
||||
|
||||
def next(self):
|
||||
def next_buildable_tasks(self):
|
||||
"""
|
||||
Return the id of the first task we find that is buildable
|
||||
"""
|
||||
for tasknum in range(len(self.rqdata.runq_fnid)):
|
||||
taskid = self.prio_map[tasknum]
|
||||
if self.rq.runq_running[taskid] == 1:
|
||||
continue
|
||||
if self.rq.runq_buildable[taskid] == 1:
|
||||
yield taskid
|
||||
|
||||
def next(self):
|
||||
"""
|
||||
Return the id of the task we should build next
|
||||
"""
|
||||
if self.rq.stats.active < self.rq.number_tasks:
|
||||
for task1 in range(len(self.rqdata.runq_fnid)):
|
||||
task = self.prio_map[task1]
|
||||
if self.rq.runq_running[task] == 1:
|
||||
continue
|
||||
if self.rq.runq_buildable[task] == 1:
|
||||
return task
|
||||
return next(self.next_buildable_tasks(), None)
|
||||
|
||||
class RunQueueSchedulerSpeed(RunQueueScheduler):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue