trace with this context (and hooks).
Typically, a module that extends statistics will register hooks in the global
-attributes tree under /TraceState/Statistics/ModuleName/hook_name . A viewer
+attributes tree under /computation/modulename/hook_name . A viewer
that needs these statistics for a set of traces does a background computation
request through a call to the main window API function. It must specify all
types of hooks that must be called for the specified trace.
Every hook that are added to the context by the scheduler comes from global
attributes, i.e.
-/traces/trace_path/TraceState/Statistics/ModuleName/hook_name
+/traces/#
+ in LttvTrace attributes : modulename/hook_name
They come with a flag telling either in_progress or ready. If the flag
ready is set, a viewer knows that the data it needs is already ready and he
New Global Attributes
-When a hook is added to the trace context, The variable
-/traces/trace_path/TraceState/Statistics/ModuleName/hook_name is set.
+/traces/#
+ in LttvTrace attributes :
When a processing is fired, a variable
-/traces/trace_path/TraceState/Statistics/ModuleName/in_progress is set.
+ computation/modulename/in_progress is set.
When a processing finished, a variable
-/traces/trace_path/TraceState/Statistics/ModuleName/in_progress is unset
-/traces/trace_path/TraceState/Statistics/ModuleName/ready is set
+ computation/modulename/in_progress is unset
+ computation/modulename/ready is set
When a viewer wants extended information, it must first check if it is ready.
if not :
-Before a viewer makes a request, it must check the in_prgoress status of the
+Before a viewer makes a request, it must check the in_progress status of the
hooks.
If the in_progress is unset, it makes the request.
Global traces
Two global attributes per trace :
-/traces/path_to_trace/LttvTrace
+traces/#
It is a pointer to the LttvTrace structure.
-/traces/path_to_trace/LttvBackgroundComputation
-/traces/path_to_trace/TraceState/... hooks to add to background computation
- in_progress and ready flags.
+ In the LttvTrace attributes :
+ state/
+ saved_states/
+ statistics/
+ modes/
+ cpu/
+ processes/
+ modulename1/
+ modulename2/
+ ...
+ computation/ /* Trace specific background computation hooks status */
+ state/
+ in_progress
+ ready
+ statistics/
+ in_progress
+ ready
+ modulename1/
+ in_progress
+ ready
+ requests_queue/ /* Background computation requests */
+ requests_current/ /* Type : BackgroundRequest */
+ notify_queue/
+ notify_current/
+
+computation/ /* Global background computation hooks */
+ state/
+ before_chunk_traceset
+ before_chunk_trace
+ before_chunk_tracefile
+ after_...
+ before_request
+ after_request
+ event_hook
+ event_hook_by_id
+ statistics/
+ ...
+ modulename1/
+ ...
+
struct _LttvBackgroundComputation {
GSList *events_requests;
- /* A GSList * to the first events request of background computation for a
- * trace. */
+ /* A GSList of events request background computation for a trace. */
LttvTraceset *ts;
/* A factice traceset that contains just one trace */
LttvTracesetContext *tsc;
Modify Traceset
-Points to the global traces. Opens new one only when no instance of the pathname
-exists.
-
-Modify LttvTrace ?
+Points to the global traces. Main window must open a new one only when no
+instance of the pathname exists.
Modify trace opening / close to make them create and destroy
-LttvBackgroundComputation (and call end requests hooks for servicing requests ?)
+LttvBackgroundComputation (and call end requests hooks for servicing requests)
+and global trace info when references to the trace is zero.
+
+
EventsRequest Structure
-This structure is the element of the events requests pools. The viewer field is
-used as an ownership identifier as well as pointer to the data structure upon
-which the action applies. Typically, this is a pointer to the viewer's data
-structure.
+This structure is the element of the events requests pools. The owner field is
+used as an ownership identifier. The viewer field is a pointer to the data
+structure upon which the action applies. Typically, both will be pointers to
+the viewer's data structure.
+
+In a ad hoc events request, a pointer to the EventsRequest structure is used as
+hook_data in the hook lists : it must have been added by the viewers.
+
+
+Modify module load/unload
-In a ad hoc events request, a pointer to this structure is used as hook_data in
-the hook lists
+A module that registers global computation hooks in the global attributes upon
+load should unregister them when unloaded. Also, it must remove every background
+computation request for each trace that has its own string as gchar *.