00001 /* 00002 * RealTimeSchedule.hh 00003 * 00004 * Copyright (c) 2003 The University of Utah and the Flux Group. 00005 * All rights reserved. 00006 * 00007 * This file is licensed under the terms of the GNU Public License. 00008 * See the file "license.terms" for restrictions on redistribution 00009 * of this file, and for a DISCLAIMER OF ALL WARRANTIES. 00010 */ 00011 00012 /** 00013 * @file RealTimeSchedule.hh 00014 * 00015 * Header file for the RealTimeSchedule helper class. 00016 */ 00017 00018 #ifndef _cpu_schedule_hh 00019 #define _cpu_schedule_hh 00020 00021 #include "BrokerC.h" 00022 00023 /** 00024 * The RealTimeSchedule class is used to help policies that manage 00025 * Broker::RealTimeTask's. 00026 */ 00027 class RealTimeSchedule 00028 { 00029 00030 public: 00031 00032 /** 00033 * Construct a RealTimeSchedule object with the given values. 00034 * 00035 * @param start The start time for the task. 00036 * @param period The task period in microseconds. 00037 * @param deadline The task deadline in microseconds, relative to the start 00038 * of the period. 00039 */ 00040 RealTimeSchedule(CORBA::ULong start = 0, 00041 CORBA::ULong period = 0, 00042 CORBA::ULong deadline = 0); 00043 00044 /** 00045 * Deconstruct a RealTimeSchedule object. 00046 */ 00047 virtual ~RealTimeSchedule(); 00048 00049 /** 00050 * Compute the number of microseconds that this schedule will have to 00051 * execute during the given time frame. 00052 * 00053 * @param start The start of the time frame, in microseconds. 00054 * @param stop The end of the time frame, in microseconds. 00055 * @return The number of microseconds during the time frame in which this 00056 * task will be schedulable. 00057 */ 00058 CORBA::ULong intersect(CORBA::ULong start, CORBA::ULong stop); 00059 00060 /** The start time for the task. XXX somewhat bogus at the moment */ 00061 CORBA::ULong rts_Start; 00062 00063 /** The task period in microseconds. */ 00064 CORBA::ULong rts_Period; 00065 00066 /** 00067 * The task deadline in microseconds, relative to the start of the 00068 * period. 00069 */ 00070 CORBA::ULong rts_Deadline; 00071 00072 }; 00073 00074 #endif