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 { } }