> * libState (or something like that) > > The libState library can be used to represent the current state of a > system in the form of an attribute tree. An attribute is a mapping > between a key (a string) and a value (generally a string, an integer > or a null value). The attribute tree is analoguous to the structure of > a filesystem, since an attribute can contain children attributes in > addition to its own value. When the path of an attribute is specified, > it can be either absolute or relative to another attribute. > > The possible operations on the attribute tree are: > - Add a new attribute, specifying its value. > - Change the value of an existing attribute. > - Delete an attribute and all its descendants. > - Get the parent attribute of an attribute. > - Get the children attributes of an attribute, or their number. > - Get the total number of attributes in the tree. > > libState is independent from LTTv, is not domain-specific, and could > be packaged separately.
I suspect provision must be made for attributes that are arrays. For instance, any of the attributes of processors in a multi-processor system. Or is it expected to handle this by introducing a layer of index attributes? (e.g. /processor/0/attribute, processor/1/attribute, etc.) > * libInterval (or something like that) > > The libInterval library can be used to represent and save an interval > tree in memory or on disk. Each interval is characterized by begin and > end timestamps, a value and a key. > > The possible operations on the interval tree are: > - Add an interval, specifying its key, value and begin/end timestamp. > - Lookup intervals that intersect a punctual time value. > - Lookup an interval that intersects a punctual time value and that > matches a given key. > > Due to the nature of the storage of the interval tree on disk, > deletion of intervals probably won't be possible. > > Like libState, libInterface is indenpendent from LTTv, is not > domain-specific, and could be packaged separately. A distinction may need to be made between inclusive and exclusive bounds: e.g. the intervals [t1..t2], [t1..t2[, ]t1..t2] and ]t1..t2[ are all different from each other. > * LTTv State module > > The State module's job is to receive attribute value changes and to > store them to constantly maintain the current state of all attributes > in the system. It also keeps the timestamp associated to the last > state change of every attribute, so that when the state of an > attribute changes, it is possible to create an interval for the > previous value. It defines a hook (using the LTTv hook system) that is > called every time the value of an attribute changes. The old and new > values and the associated timestamps are passed as parameters to the > callbacks. It offers a public API to other modules to send state > changes and query current state values. > > The State module built around the libState library. > * LTTv StateHistory module > > The StateHistory module's job is to record the state of the system for > any moment of the time lapse of the trace. The state is represented by > the combination of the values of all the attributes of the system. To > do so, it hooks on State module's hook and creates an interval in the > interval tree every time an attribute changes value. It offers a > public API to other modules to get the value of any attribute or all > available attributes at a given time. > > The StateHistory module is built around the libInterval library. Daniel U. Thibault R & D pour la défense Canada - Valcartier (RDDC Valcartier) / Defence R&D Canada - Valcartier (DRDC Valcartier) Système de systèmes (SdS) / System of Systems (SoS) Solutions informatiques et expérimentations (SIE) / Computing Solutions and Experimentations (CSE) 2459 Boul. Pie XI Nord Québec, QC G3J 1X5 CANADA Vox : (418) 844-4000 x4245 Fax : (418) 844-4538 NAC: 918V QSDJ Gouvernement du Canada / Government of Canada <http://www.valcartier.drdc-rddc.gc.ca/> _______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
