FastList.xcc

Benoit Dupont de Dinechin (Benoit.Dupont-de-Dinechin@st.com).

Copyright 2002 - 2007 STMicroelectronics. Copyright 1995 - 1998 Commissariat a l'Energie Atomique.

This program is free software; you can redistribute it and/or modify it under the terms of either (at your option): the GNU General Public License (GPL) version 2; the GNU Lesser General Public License (LGPL) version 2.1; any later version of these licences as published by the Free Software Foundation.

FastListRank— FastList scheduling rank.
struct FastListRank_;
FastListType— Enumeration of the FastList date types.
typedef enum {
  FastListType_Release,         // Release date.
  FastListType_Schedule,        // Schedule date.
  FastListType_Deadline,        // Deadline date.
  FastListType__
} enum_FastListType;
typedef uint8_t FastListType;
extern const char *
FastListType_name_(FastListType this);
FastListTask— FastList task to FastList schedule.
struct FastListTask_;
FastList— FastList scheduling implementation.

Fast List scheduling solves the following problem: Given a set of tasks to schedule, each with a release date, a deadline, and required resources, list schedule (Graham) as Unit Execution Tasks (UET) on a parallel machine with m processors. The outcome is false if any task misses its deadline.

struct FastList_;
FastList_updateRelease— Update the release dates and keep the list in order.

In order to save sorting time, we extract the FastListTask(s) whose release date was updated into an auxiliary list, sort the auxiliary list, and merge it back. Thus the list must be sorted when entering FastList_updateRelease.

void
FastList_updateRelease(FastList this, int p, int q);
FastList_updateDeadline— Update the deadline dates and keep the list in order.

Similar to FastList_updateRelease, in particular the list must be sorted when entering FastList_updateDeadline. And additional specialization is that at most one deadline is modified, so the update loop can be exited early.

void
FastList_updateDeadline(FastList this, int p, int q);
FastList_sortTasks— Sort this FastList TASKS on the specified list.
Return
true if sorting changed the list, false if already sorted.

See CCL/IDList.xcc:IDList_sort().

bool
FastList_sortTasks(FastList this, FastListType type, FastListTask lists);
FastList_schedule— Test if this FastList schedule is feasible.
bool
FastList_schedule(FastList this, Resource resource);
FastList_check— Check that this FastList schedule is feasible.
bool
FastList_check(FastList this, Resource resource);
FastList_pretty— Pretty-print this FastList.
bool
FastList_pretty(FastList this, FILE *file);