be0aa7ac89
A persistent build problem we see is where a source file accidentally omits the #include of log.h. This slips through local developer testing because if you configure with the default (log) trace backend trace.h will pull in log.h for you. Compilation fails only if some other backend is selected. To make this error cause a compile failure regardless of the configured trace backend, split out the parts of log.h that trace.h requires into a new log-for-trace.h header. Since almost all manual uses of the log.h functions will use constants or functions which aren't in log-for-trace.h, this will let us catch missing #include "qemu/log.h" more consistently. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20180213140029.8308-1-peter.maydell@linaro.org Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Stderr built-in backend.
|
|
"""
|
|
|
|
__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
|
|
__copyright__ = "Copyright 2012-2017, 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
|
|
|
|
|
|
PUBLIC = True
|
|
|
|
|
|
def generate_h_begin(events, group):
|
|
out('#include "qemu/log-for-trace.h"',
|
|
'')
|
|
|
|
|
|
def generate_h(event, group):
|
|
argnames = ", ".join(event.args.names())
|
|
if len(event.args) > 0:
|
|
argnames = ", " + argnames
|
|
|
|
if "vcpu" in event.properties:
|
|
# already checked on the generic format code
|
|
cond = "true"
|
|
else:
|
|
cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
|
|
|
|
out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
|
|
' struct timeval _now;',
|
|
' gettimeofday(&_now, NULL);',
|
|
' qemu_log("%%d@%%zd.%%06zd:%(name)s " %(fmt)s "\\n",',
|
|
' getpid(),',
|
|
' (size_t)_now.tv_sec, (size_t)_now.tv_usec',
|
|
' %(argnames)s);',
|
|
' }',
|
|
cond=cond,
|
|
name=event.name,
|
|
fmt=event.fmt.rstrip("\n"),
|
|
argnames=argnames)
|
|
|
|
|
|
def generate_h_backend_dstate(event, group):
|
|
out(' trace_event_get_state_dynamic_by_id(%(event_id)s) || \\',
|
|
event_id="TRACE_" + event.name.upper())
|