Declares a data-driven state provider which defines how events change the state of attributes of the system. Each state provider defined in XML will become an analysis in TMF. Provide meta-information on this state provider, like labels and applicable trace types. Define a value that maps a string used in the state provider to a numbered value. Declare shortcuts to frequently used attribute/data locations. For instance, if a path to an often-used attribute is CPUs/{event.some_field}/Threads/Status, it may be a good idea to put this path in a location and then use the location name in the event handlers. Define how a given event will modify the state system being built. For each event in the trace that causes a state change, a event handler should be defined. The unique ID of this state provider. It will be used to identify the analysis that will be built from this state provider. The version ID of this state provider. Whenever the state provider changes so that the resulting state system is different from previous versions, this version number should be bumped. Declares the meta-information that can be defined for an XML state provider. Indicate that the state provider applies to a given trace type. The ID of the trace type, as declared in a org.eclipse.linuxtools.tmf.core.tracetype extension point or a custom trace parser. For example: "org.eclipse.linuxtools.lttng2.kernel.tracetype" or "org.eclipse.linuxtools.lttng2.ust.tracetype" for respectively LTTng Kernel and LTTng UST traces. Add a label to the state provider. If provided, this text will be the name of the analysis that the user will see in TMF. The text to name this state provider (and the analysis it will generate). Define how an event modifies the state of the system. There should be one event handler for each event causing a state change. Define how the state system is modified by the event. An event may cause more than one state change. Name of the event that causes a state change. Define a change of state in the state system being built. Describe a single attribute assignation. Simply put: a state change where path/to/attribute=value. Explain how to reach an attribute in the state system. It describes the path/to/attribute. Explain how to obtain the value of the state attribute to modify. Describe a conditional state change, where different path conditions may lead to different state changes. Define the condition to verify. Define the state change to use if the previous condition is true. Optionally define the state change to use if the condition is false. Define a conditional statement. Conditions may use values of the state system or from the event being handled. This element defines a statement in the form of "if (some_path == value)". Compare the current value of an attribute of the state system. Compare the value of an event field. Define the value to compare to. Indicate that a comparison operation will be performed with the value The operation type is to check if two values are equal The operation type is to check if two values are not equal The operation type is to check if the first value is greater than or equal the second one The operation type is to check if the first value is greater than the second one The operation type is to check if the first value is smaller than or equal the second one The operation type is to check if the first value is smaller than the second one Define a conditional statement with only one child. From this element, a condition may be composed of other conditional elements to create more complex conditional statements. Define a condition element, in the form "if (some_path == value)". Negate the result of the following condition, allowing statements of the form "if (!cond)". ANDs 2 conditional statements, allowing statements of the form "if (condA AND condB)" ORs 2 conditional statements, allowing statements of the form "if (condA OR condB)" Allows the composition of more than one conditional statements. Define a condition element, in the form "if (some_path == value)". ORs 2 conditional statements, allowing statements of the form "if (condA OR condB)" ANDs 2 conditional statements, allowing statements of the form "if (condA AND condB)" Negate the result of the following condition, allowing statements of the form "if (!cond)". Define a path to an attribute of the state system. If the type is a "query", those stateAttribute elements describe the elements of the query. The type of path to this attribute. The meaning of those paths type will depend on the context where the stateAttribute is being used. Not all types will make sense everywhere. This type does not change the current attribute. Whatever attribute was the reference attribute at a given time, it will be returned as is. This type identifies the state system attribute by a constant string. For instance, if the first level attribute of the state system is "Threads", then a constant type with "Threads" value should be used. This type identifies the attribute by the value of an event field. Note that the event field corresponds to the attribute name, not its value. For example, if the event has a field called "current_cpu" with a value of "2", "2" would be the attribute name we want. This type identifies the attribute as the name of an event. This type indicates that the path to the attribute is at the specified location. Location simply avoids having to write full path to an attribute each time it is being used, but the location itself is a sequence of stateAttribute elements. For example, if we previously defined a location named "CurrentThead" for path "CPUs/{current_cpu}/CurrentThread", we can use a stateAttribute of type location with "CurrentThread" value. This type indicates that the path to the attribute is the result of a query. If this type is selected, a sequence of stateAttribute elements needs to be specified for this state attribute. The result of the query is the attribute name of the current element. For example, if the attribute we want is the PID of the current process on CPU 0, that PID can be found through the query "CPUs/0/CurrentThread". The value of this attribute would be, for example, 1234, the attribute we are looking for. The value of this state attribute. A value should be specified only if the type is "constant", "eventField" or "location". Define a value, that can be assigned to an attribute of the state system. For a "query" value type, a sequence of stateAttributes will define the query whose result is the value. The type of this state value. It will describe how to obtain to value and/or what to do with it. Indicate that the value is a null value. The value is a constant of type integer. The value is a constant of type long The value is a constant of type string The value is the content of an event field. The "value" attribute is the field name. To convert this field to a certain type, attribute "forcedType" may be used. The value is the name of the event. Indicate that the attribute the value is to be applied to should be deleted. The value is the result of a query to the state system. If this type is selected, a sequence of stateAttributes must be defined in this stateValue element. Indicate that the current value will be added to any previously available value. Indicate that a stack operation will be performed with the value The value will be popped from the stack The value will be pushed on a stack The value will be peeked from the top of the stack, but it will stay there Indicate the desired type for the state value. If the value is not already of this type, a conversion will be attempted. The forcedType is used to convert values of event fields. The value should be an integer The value should be a long The value should be a string The value should be a double Indicate what the value is. A value should be specified only if the type is int, long, string or event_field. See the documentation on types for information on what to put for value. This element is used in conditions where the value of an event field is compared to something else. It is not the same as the stateAttribute's type eventField, where the eventField is used as the name for an attribute to the state system. Indicate which field to use.