Appendix: SIDL Description of Performance Interface
version performance 1.0;
package performance
{
interface Timer
{ /* Start/stop the Timer */
void start();
void stop();
/* Set/get the Timer name */
void setName(in string name);
string getName();
/* Set/get Timer type information
(e.g., signature of the routine) */
void setType(in string name);
string getType();
/* Set/get the group name associated
with the Timer */
void setGroupName(in string name);
string getGroupName();
/* Set/get the group id associated
with the Timer */
void setGroupId(in long group);
long getGroupId();
}
/* Query interface to obtain timing
* information */
interface Query
{ /* Get the list of Timer and Counter names */
array<string> getTimerNames();
array<string> getCounterNames();
/* Returns inclusive/exclusive time, numcalls,
childcalls and counter names for given
timers */
void getTimerData(in array<string> timerList,
out array<double, 2> counterExclusive,
out array<double, 2> counterInclusive,
out array<int> numCalls,
out array<int> numChildCalls,
out array<string> counterNames,
out int numCounters);
/* Writes instantaneous profile to disk
* in a dump file. */
void dumpProfileData();
/* Writes the instantaneous profile to disk
* in a dump file whose name
* contains the current timestamp. */
void dumpProfileDataIncremental();
/* Writes the list of timer names to a
* dump file on the disk */
void dumpTimerNames();
/* Writes the profile of the given set of
* timers to the disk. */
void dumpTimerData(in array<string> timerList);
/* Writes the profile of the given set of
* timers to the disk. The dump file name
* contains the current timestamp when
* the data was dumped. */
void dumpTimerDataIncremental(
in array<string> timerList);
}
/* User defined event profiles for application
* specific events */
interface Event
{ /* Set the name of the event */
void setName(in string name);
/* Trigger the event */
void trigger(in double data);
}
/* Interface for runtime instrumentation control
* based on groups */
interface Control
{ /* Enable/disable group id */
void enableGroupId(in long id);
void disableGroupId(in long id);
/* Enable/disable group name */
void enableGroupName(in string name);
void disableGroupName(in string name);
/* Enable/disable all groups */
void enableAllGroups();
void disableAllGroups();
}
/* Interface to create performance component
* instances */
interface Measurement extends gov.cca.Port
{ /* Create a Timer */
Timer createTimer();
Timer createTimerWithName(in string name);
Timer createTimerWithNameType(in string name,
in string type);
Timer createTimerWithNameTypeGroup(in string
name, in string type, in string group);
/* Create a Query interface */
Query createQuery();
/* Create a User Defined Event interface */
Event createEvent();
Event createEventWithName(in string name);
/* Create a Control interface for selectively
* enabling and disabling
* the instrumentation based on groups */
Control createControl();
}
/* TAU */
/* Implementation of performance component
* Timer interface*/
class TauTimer implements-all Timer
{
}
/* Implementation of performance component
* Event interface*/
class TauEvent implements-all Event
{
}
/* Implementation of performance component
* Query interface*/
class TauQuery implements-all Query
{
}
/* Implementation of performance component
* Control interface*/
class TauControl implements-all Control
{
}
/* Implementation of performance component
* Measurement interface*/
class TauMeasurement implements-all Measurement,
gov.cca.Component
{
}
}