00001 /* #start# *********************************************************** 00002 00003 Scheduling Simulator 00004 Lehrstuhl f"ur Effiziente Algorithmen 00005 Technische Universit"at M"unchen 00006 00007 File : $Id: SBrdCastEQUIEDF.h,v 1.2 2003/02/07 02:28:15 taeubig Exp $ 00008 00009 Purpose : 00010 00011 * #end# ************************************************************* */ 00012 00013 #ifndef SBRDCASTEQUIEDF_H 00014 #define SBRDCASTEQUIEDF_H 00015 00016 // system header files 00017 #include <LEDA/graph.h> 00018 #include <LEDA/array.h> 00019 #include <LEDA/sortseq.h> 00020 00021 #ifndef leda_seq_item 00022 #define leda_seq_item seq_item 00023 #endif 00024 00025 // project header files 00026 #include "SBrdCastAlgorithm.h" 00027 #include "../tools/SJobIdArray.h" 00028 00031 class SBrdCastEQUIEDF : public SBrdCastAlgorithm { 00032 public: 00033 virtual ~SBrdCastEQUIEDF() {}; 00034 virtual void startup(); 00035 virtual double innerLoop(const leda_list<STSysSchedEvent>& rEvents); 00036 virtual const leda_string getDescription() const; 00037 virtual const leda_string &getName() const; 00038 private: 00039 double _eps; 00040 int _m; // # msgs 00041 double _prevTime; // prev sim-step 00042 leda_array<double> _msgProcTimes; 00043 leda_array<double> _minRelTimes; // msgs are only counted if their release 00044 // time is at least the one given here 00045 leda_array<double> _cumTimesEQUI; // the amount of each msg which is 00046 // broadcasted until now 00047 int _totalEQUIRequ; // total # requests being serviced by EQUI 00048 leda_array<int> _msgCounts; // # requests waiting for a msg from _prevTime 00049 // until now 00050 // stuff for EDF 00051 leda_array<double> _cumTimesEDF; 00052 leda_sortseq<double, int> _deadlines; 00053 }; 00054 00055 #endif