Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

PartitionPolicyImpl Class Reference

Collaboration diagram for PartitionPolicyImpl:

Collaboration graph
[legend]
List of all members.

Detailed Description

An implementation of the PartitionPolicy interface.

Definition at line 31 of file PartitionPolicyImpl.hh.

Public Member Functions

 PartitionPolicyImpl (const char *name)
 Construct a PartitionPolicyImpl object with the given values.
virtual ~PartitionPolicyImpl (void)
 Deconstruct the policy.
virtual char * Name (void) throw (CORBA::SystemException)
 Mostly useful for debugging.
virtual void AddTask (Broker::Task_ptr new_task, const Broker::ScheduleParameters &sp) throw (CORBA::SystemException, Broker::DuplicateScheduleParameter, Broker::InvalidScheduleParameter, Broker::MissingScheduleParameter)
 NOTE: This method will be called before the reservation is made, giving the policy a chance to adjust any values.

See also:
RemoveTask
Parameters:
new_task The newly created Task object.
sp The tasks's scheduling parameters.
Exceptions:
CORBA::BAD_PARAM if task is nil.
CORBA::BAD_PARAM if task has already been added.
CORBA::BAD_INV_ORDER if the method is called without Activate() being called first.

virtual void RemoveTask (Broker::Task_ptr added_task) throw (CORBA::SystemException)
 NOTE: This method will be called after the reservation has been destroyed, so it can safely reallocate the newly freed CPU time.

See also:
AddTask
Parameters:
added_task The task to remove.
Exceptions:
CORBA::BAD_PARAM if task is nil.
CORBA::BAD_PARAM if task has already been removed.
CORBA::BAD_INV_ORDER if the method is called without Activate() being called first.

virtual Broker::TaskListGetTaskList (void) throw (CORBA::SystemException)
 
Returns:
The list of task's managed by this policy.

virtual void Activate (const Broker::TaskList &tasks) throw (CORBA::SystemException)
 NOTE: The policy is expected to discover and adjust the scheduling parameters of any currently executing tasks.

See also:
Deactivate
Parameters:
tasks The list of tasks the policy needs to manage.
Exceptions:
CORBA::BAD_INV_ORDER if the method is called without intervening calls to Deactivate().

virtual void Deactivate (void) throw (CORBA::SystemException)
 NOTE: The policy should change any scheduling parameters of the currently executing tasks, the next policy to be activated will handle any changes.

See also:
Deactivate
Exceptions:
CORBA::BAD_INV_ORDER if the method is called on an inactive policy.

virtual Broker::CPUReserve ChangeTaskCPU (Broker::RealTimeTask_ptr task, const Broker::CPUReserve &advice) throw (CORBA::SystemException, Broker::InvalidState)
 
Parameters:
task The Task object requesting a CPU time change.
advice The CPU time advice from the Task object.
Returns:
The actual CPU reserve given to the task.

virtual CORBA::Float GetMaxCPUAllocation (void) throw (CORBA::SystemException)
 
Returns:
The maximum percentage of CPU that can be allocated to all of the tasks.

virtual void SetMaxCPUAllocation (CORBA::Float amount) throw (CORBA::SystemException)
 
Parameters:
amount The maximum percentage of CPU that can be allocated to all of the tasks.

virtual void DefaultPolicy (Broker::Policy_ptr policy) throw (CORBA::SystemException)
 
virtual Broker::Policy_ptr DefaultPolicy (void) throw (CORBA::SystemException)
 
virtual void SetTaskPolicy (Broker::Task_ptr task, Broker::Policy_ptr bp) throw (CORBA::SystemException)
 
Parameters:
task The task whose policy should be changed.
bp The new policy.
Exceptions:
CORBA::BAD_PARAM if task is nil.
CORBA::BAD_PARAM if task is not managed by this policy.

virtual Broker::Policy_ptr GetTaskPolicy (Broker::Task_ptr task) throw (CORBA::SystemException)
 
Parameters:
task The task whose policy should be retrieved.
Returns:
The task's policy.
Exceptions:
CORBA::BAD_PARAM if task is nil.
CORBA::BAD_PARAM if task is not managed by this policy.


Private Member Functions

void RepairTaskList (void)
 Repair the task list by removing any dead/unreachable objects.
TaskDataFindTaskData (Broker::RealTimeTask_ptr task)
 Find the TaskData node that corresponds to the given task.

Private Attributes

float pp_MaxUsedCPU
 The maximum percentage of CPU time that we are allowed to allocate.
CORBA::String_var pp_Name
 The name of this object as registered with the NamingService.
Broker::Policy_var pp_DefaultPolicy
 The default subpolicy to use for newly added tasks.
lnMinList pp_List
 A list of TaskData objects.


Constructor & Destructor Documentation

PartitionPolicyImpl::PartitionPolicyImpl const char *  name  ) 
 

Construct a PartitionPolicyImpl object with the given values.

Parameters:
name The name of this object as registered with the NamingService.

Definition at line 28 of file PartitionPolicyImpl.cc.

References lnNewList(), and require.

Here is the call graph for this function:


Member Function Documentation

void PartitionPolicyImpl::Activate const Broker::TaskList tl  )  throw (CORBA::SystemException) [virtual]
 

NOTE: The policy is expected to discover and adjust the scheduling parameters of any currently executing tasks.

See also:
Deactivate
Parameters:
tasks The list of tasks the policy needs to manage.
Exceptions:
CORBA::BAD_INV_ORDER if the method is called without intervening calls to Deactivate().

Todo:
implement

Definition at line 157 of file PartitionPolicyImpl.cc.

void PartitionPolicyImpl::Deactivate void   )  throw (CORBA::SystemException) [virtual]
 

NOTE: The policy should change any scheduling parameters of the currently executing tasks, the next policy to be activated will handle any changes.

See also:
Deactivate
Exceptions:
CORBA::BAD_INV_ORDER if the method is called on an inactive policy.

Todo:
implement

Definition at line 163 of file PartitionPolicyImpl.cc.

struct PartitionPolicyImpl::TaskData * PartitionPolicyImpl::FindTaskData Broker::RealTimeTask_ptr  task  )  [private]
 

Find the TaskData node that corresponds to the given task.

Parameters:
task The Broker::RealTimeTask object to look up.
Returns:
The TaskData list node that has the given task object.
Exceptions:
Broker::Internal If no TaskData node exists for the given task.

Definition at line 299 of file PartitionPolicyImpl.cc.

References lnMinList::lh_Head, lnMinNode::ln_Succ, pp_List, require, PartitionPolicyImpl::TaskData::td_Link, and PartitionPolicyImpl::TaskData::td_Task.


The documentation for this class was generated from the following files:
Generated on Fri Oct 22 07:51:03 2004 for CPU Broker by  doxygen 1.3.9.1