Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
trace: Provide a generic tracing event descriptor
Uses tracetool to generate a backend-independent tracing event description (struct TraceEvent). The values for such structure are generated with the non-public "events" backend ("events-c" frontend). The generation of the defines to check if an event is statically enabled is also moved to the "events" backend ("events-h" frontend). Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
- Loading branch information
1 parent
93fba16
commit 45be2f5
Showing
7 changed files
with
172 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
""" | ||
Generic event description. | ||
This is a dummy backend to establish appropriate frontend/backend compatibility | ||
checks. | ||
""" | ||
|
||
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" | ||
__copyright__ = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>" | ||
__license__ = "GPL version 2 or (at your option) any later version" | ||
|
||
__maintainer__ = "Stefan Hajnoczi" | ||
__email__ = "stefanha@linux.vnet.ibm.com" | ||
|
||
|
||
def events_h(events): | ||
pass | ||
|
||
def events_c(events): | ||
pass |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
""" | ||
Generate .c for event description. | ||
""" | ||
|
||
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" | ||
__copyright__ = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>" | ||
__license__ = "GPL version 2 or (at your option) any later version" | ||
|
||
__maintainer__ = "Stefan Hajnoczi" | ||
__email__ = "stefanha@linux.vnet.ibm.com" | ||
|
||
|
||
from tracetool import out | ||
|
||
|
||
def begin(events): | ||
out('/* This file is autogenerated by tracetool, do not edit. */', | ||
'', | ||
'#include "trace.h"', | ||
'#include "trace/generated-events.h"', | ||
'#include "trace/control.h"', | ||
'', | ||
) | ||
|
||
out('TraceEvent trace_events[TRACE_EVENT_COUNT] = {') | ||
|
||
for e in events: | ||
out(' { .id = %(id)s, .name = \"%(name)s\", .sstate = %(sstate)s, .dstate = 0 },', | ||
id = "TRACE_" + e.name.upper(), | ||
name = e.name, | ||
sstate = "TRACE_%s_ENABLED" % e.name.upper(), | ||
) | ||
|
||
out('};', | ||
'', | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
#!/usr/bin/env python | ||
# -*- coding: utf-8 -*- | ||
|
||
""" | ||
Generate .h for event description. | ||
""" | ||
|
||
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>" | ||
__copyright__ = "Copyright 2012, Lluís Vilanova <vilanova@ac.upc.edu>" | ||
__license__ = "GPL version 2 or (at your option) any later version" | ||
|
||
__maintainer__ = "Stefan Hajnoczi" | ||
__email__ = "stefanha@linux.vnet.ibm.com" | ||
|
||
|
||
from tracetool import out | ||
|
||
|
||
def begin(events): | ||
out('/* This file is autogenerated by tracetool, do not edit. */', | ||
'', | ||
'#ifndef TRACE__GENERATED_EVENTS_H', | ||
'#define TRACE__GENERATED_EVENTS_H', | ||
'', | ||
'#include <stdbool.h>', | ||
'' | ||
) | ||
|
||
# event identifiers | ||
out('typedef enum {') | ||
|
||
for e in events: | ||
out(' TRACE_%s,' % e.name.upper()) | ||
|
||
out(' TRACE_EVENT_COUNT', | ||
'} TraceEventID;', | ||
) | ||
|
||
# static state | ||
for e in events: | ||
if 'disable' in e.properties: | ||
enabled = 0 | ||
else: | ||
enabled = 1 | ||
out('#define TRACE_%s_ENABLED %d' % (e.name.upper(), enabled)) | ||
|
||
out('#include "trace/event-internal.h"', | ||
'', | ||
'#endif /* TRACE__GENERATED_EVENTS_H */', | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/* | ||
* Interface for configuring and controlling the state of tracing events. | ||
* | ||
* Copyright (C) 2012 Lluís Vilanova <vilanova@ac.upc.edu> | ||
* | ||
* This work is licensed under the terms of the GNU GPL, version 2 or later. | ||
* See the COPYING file in the top-level directory. | ||
*/ | ||
|
||
#ifndef TRACE__EVENT_INTERNAL_H | ||
#define TRACE__EVENT_INTERNAL_H | ||
|
||
#include "trace/generated-events.h" | ||
|
||
|
||
/** | ||
* TraceEvent: | ||
* @id: Unique event identifier. | ||
* @name: Event name. | ||
* @sstate: Static tracing state. | ||
* @dstate: Dynamic tracing state. | ||
* | ||
* Opaque generic description of a tracing event. | ||
*/ | ||
typedef struct TraceEvent { | ||
TraceEventID id; | ||
const char * name; | ||
const bool sstate; | ||
bool dstate; | ||
} TraceEvent; | ||
|
||
|
||
#endif /* TRACE__EVENT_INTERNAL_H */ |