Merge remote-tracking branch 'stefanha/tracing' into staging
This commit is contained in:
commit
0ffcb2ca8d
@ -132,12 +132,19 @@ This functionality is also provided through monitor commands:
|
|||||||
means disabled.
|
means disabled.
|
||||||
|
|
||||||
* trace-event NAME on|off
|
* trace-event NAME on|off
|
||||||
Enable/disable a given trace event.
|
Enable/disable a given trace event or a group of events having common prefix
|
||||||
|
through wildcard.
|
||||||
|
|
||||||
The "-trace events=<file>" command line argument can be used to enable the
|
The "-trace events=<file>" command line argument can be used to enable the
|
||||||
events listed in <file> from the very beginning of the program. This file must
|
events listed in <file> from the very beginning of the program. This file must
|
||||||
contain one event name per line.
|
contain one event name per line.
|
||||||
|
|
||||||
|
A basic wildcard matching is supported in both the monitor command "trace
|
||||||
|
-event" and the events list file. That means you can enable/disable the events
|
||||||
|
having a common prefix in a batch. For example, virtio-blk trace events could
|
||||||
|
be enabled using:
|
||||||
|
trace-event virtio_blk_* on
|
||||||
|
|
||||||
== Trace backends ==
|
== Trace backends ==
|
||||||
|
|
||||||
The "tracetool" script automates tedious trace event code generation and also
|
The "tracetool" script automates tedious trace event code generation and also
|
||||||
|
@ -324,14 +324,29 @@ void trace_print_events(FILE *stream, fprintf_function stream_printf)
|
|||||||
bool trace_event_set_state(const char *name, bool state)
|
bool trace_event_set_state(const char *name, bool state)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
unsigned int len;
|
||||||
|
bool wildcard = false;
|
||||||
|
bool matched = false;
|
||||||
|
|
||||||
|
len = strlen(name);
|
||||||
|
if (len > 0 && name[len - 1] == '*') {
|
||||||
|
wildcard = true;
|
||||||
|
len -= 1;
|
||||||
|
}
|
||||||
for (i = 0; i < NR_TRACE_EVENTS; i++) {
|
for (i = 0; i < NR_TRACE_EVENTS; i++) {
|
||||||
|
if (wildcard) {
|
||||||
|
if (!strncmp(trace_list[i].tp_name, name, len)) {
|
||||||
|
trace_list[i].state = state;
|
||||||
|
matched = true;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!strcmp(trace_list[i].tp_name, name)) {
|
if (!strcmp(trace_list[i].tp_name, name)) {
|
||||||
trace_list[i].state = state;
|
trace_list[i].state = state;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return matched;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Helper function to create a thread with signals blocked. Use glib's
|
/* Helper function to create a thread with signals blocked. Use glib's
|
||||||
|
@ -15,14 +15,29 @@ void trace_print_events(FILE *stream, fprintf_function stream_printf)
|
|||||||
bool trace_event_set_state(const char *name, bool state)
|
bool trace_event_set_state(const char *name, bool state)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
unsigned int len;
|
||||||
|
bool wildcard = false;
|
||||||
|
bool matched = false;
|
||||||
|
|
||||||
|
len = strlen(name);
|
||||||
|
if (len > 0 && name[len - 1] == '*') {
|
||||||
|
wildcard = true;
|
||||||
|
len -= 1;
|
||||||
|
}
|
||||||
for (i = 0; i < NR_TRACE_EVENTS; i++) {
|
for (i = 0; i < NR_TRACE_EVENTS; i++) {
|
||||||
|
if (wildcard) {
|
||||||
|
if (!strncmp(trace_list[i].tp_name, name, len)) {
|
||||||
|
trace_list[i].state = state;
|
||||||
|
matched = true;
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!strcmp(trace_list[i].tp_name, name)) {
|
if (!strcmp(trace_list[i].tp_name, name)) {
|
||||||
trace_list[i].state = state;
|
trace_list[i].state = state;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return matched;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool trace_backend_init(const char *events, const char *file)
|
bool trace_backend_init(const char *events, const char *file)
|
||||||
|
Loading…
Reference in New Issue
Block a user