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:
Chris Larson 2010-07-23 14:32:14 -07:00 committed by Richard Purdie
parent 0d1034d2ea
commit ebe3850bee
1 changed files with 13 additions and 7 deletions

View File

@ -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):
"""