- Fixed all Dynamic and Static entities lacking proper destructors: Dynamic entities need to delete Dynamic children, Static entities need only to delete them from the list of their siblings - Added methods to get Static "core" from Dynamic*. - Now get_core() is a pure virtual function into DynamicSchedulable. A quite nice solution(?), really, if I can say that myself... ;-) - ConcreteHistory is half-implemented. It's the other half that worries me. - TODO: finish off ConcreteHistory, and check that things get destroyed properly (no leaks allowed, use valgrind). - TODO: rework Simulation - TODO: Scheduler rewrite - *A side note*: this code is becoming a mess. I prefer references over pointers, but someone other prefer pointers over references, and what happens is that you've to continously pass from one to another when invoking other methods... this is bad. git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@694 3ecf2c5c-341e-0410-92b4-d18e462d057c
79 lines
2.5 KiB
C++
79 lines
2.5 KiB
C++
// src/backend/static_schedulable.hh - Copyright 2005, 2006, University
|
|
// of Padova, dept. of Pure and Applied
|
|
// Mathematics
|
|
//
|
|
// This file is part of SGPEMv2.
|
|
//
|
|
// This is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// SGPEMv2 is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with SGPEMv2; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
#ifndef STATIC_SCHEDULABLE_HH
|
|
#define STATIC_SCHEDULABLE_HH 1
|
|
|
|
#include "config.h"
|
|
#include "glibmm/ustring.h"
|
|
|
|
namespace sgpem
|
|
{
|
|
class StaticSchedulable;
|
|
|
|
/** \brief An entity that can use the processor
|
|
*
|
|
* This abstract class describes an entity that can use the processor. It
|
|
* describes the parameters that don't change during a simulation.
|
|
*
|
|
* For a reference of a schedulable among its current status see referenced
|
|
* class.
|
|
*
|
|
* \see DynamicSchedulable
|
|
*/
|
|
class SG_DLLLOCAL StaticSchedulable
|
|
{
|
|
public:
|
|
/** \brief Create a new object with the given parameters */
|
|
StaticSchedulable(const Glib::ustring& name, const int& priority);
|
|
virtual ~StaticSchedulable();
|
|
|
|
/** \brief Returns the arrival time for this process
|
|
*
|
|
* The arrival time of a process is the number of time units, starting
|
|
* from instant zero, at which the process is added on the queue.
|
|
*/
|
|
virtual unsigned int get_arrival_time() const = 0;
|
|
|
|
/** \brief Returns the amount of CPU time this process is going to require */
|
|
virtual unsigned int get_total_cpu_time() const = 0;
|
|
|
|
/** \brief Returns the priority of this process
|
|
*
|
|
* The priority of a process is a number assigned to it when it is
|
|
* spawned, and never changes for its lifetime.
|
|
*/
|
|
virtual int get_priority() const;
|
|
|
|
/** \brief Returns a string representing this object
|
|
*
|
|
* The name of a process is a human readable string assigned to it by the
|
|
* user, that allows it to be quickly recognized.
|
|
*/
|
|
virtual const Glib::ustring& get_name() const;
|
|
|
|
private:
|
|
Glib::ustring _name;
|
|
int _priority;
|
|
};
|
|
}
|
|
|
|
#endif
|