Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/xen/trace.h
Line
Count
Source (jump to first uncovered line)
1
/******************************************************************************
2
 * include/xen/trace.h
3
 *
4
 * Xen Trace Buffer
5
 *
6
 * Copyright (C) 2003 by Intel Research Cambridge
7
 *
8
 * Author: Mark Williamson, mark.a.williamson@intel.com
9
 * Date:   January 2004
10
 *
11
 * Copyright (C) 2005 Bin Ren
12
 *
13
 * The trace buffer code is designed to allow debugging traces of Xen to be
14
 * generated on UP / SMP machines.  Each trace entry is timestamped so that
15
 * it's possible to reconstruct a chronological record of trace events.
16
 *
17
 * Access to the trace buffers is via a dom0 hypervisor op and analysis of
18
 * trace buffer contents can then be performed using a userland tool.
19
 */
20
21
#ifndef __XEN_TRACE_H__
22
#define __XEN_TRACE_H__
23
24
extern int tb_init_done;
25
26
#include <public/sysctl.h>
27
#include <public/trace.h>
28
#include <asm/trace.h>
29
30
/* Used to initialise trace buffer functionality */
31
void init_trace_bufs(void);
32
33
/* used to retrieve the physical address of the trace buffers */
34
int tb_control(struct xen_sysctl_tbuf_op *tbc);
35
36
int trace_will_trace_event(u32 event);
37
38
void __trace_var(u32 event, bool_t cycles, unsigned int extra, const void *);
39
40
static inline void trace_var(u32 event, int cycles, int extra,
41
                             const void *extra_data)
42
130
{
43
130
    if ( unlikely(tb_init_done) )
44
0
        __trace_var(event, cycles, extra, extra_data);
45
130
}
Unexecuted instantiation: domctl.c:trace_var
Unexecuted instantiation: domain.c:trace_var
Unexecuted instantiation: grant_table.c:trace_var
Unexecuted instantiation: memory.c:trace_var
Unexecuted instantiation: multicall.c:trace_var
sched_credit.c:trace_var
Line
Count
Source
42
44
{
43
44
    if ( unlikely(tb_init_done) )
44
0
        __trace_var(event, cycles, extra, extra_data);
45
44
}
Unexecuted instantiation: sched_credit2.c:trace_var
Unexecuted instantiation: sched_rt.c:trace_var
Unexecuted instantiation: sched_null.c:trace_var
Unexecuted instantiation: schedule.c:trace_var
Unexecuted instantiation: sysctl.c:trace_var
Unexecuted instantiation: trace.c:trace_var
Unexecuted instantiation: utility.c:trace_var
Unexecuted instantiation: iommu.c:trace_var
Unexecuted instantiation: compat.c:trace_var
Unexecuted instantiation: io_apic.c:trace_var
irq.c:trace_var
Line
Count
Source
42
62
{
43
62
    if ( unlikely(tb_init_done) )
44
0
        __trace_var(event, cycles, extra, extra_data);
45
62
}
Unexecuted instantiation: mm.c:trace_var
Unexecuted instantiation: platform_hypercall.c:trace_var
Unexecuted instantiation: setup.c:trace_var
Unexecuted instantiation: traps.c:trace_var
Unexecuted instantiation: cpu_idle.c:trace_var
Unexecuted instantiation: mwait-idle.c:trace_var
Unexecuted instantiation: vpmu.c:trace_var
Unexecuted instantiation: vpmu_intel.c:trace_var
Unexecuted instantiation: emulate.c:trace_var
Unexecuted instantiation: hpet.c:trace_var
Unexecuted instantiation: hvm.c:trace_var
Unexecuted instantiation: i8254.c:trace_var
Unexecuted instantiation: io.c:trace_var
Unexecuted instantiation: ioreq.c:trace_var
Unexecuted instantiation: rtc.c:trace_var
vlapic.c:trace_var
Line
Count
Source
42
24
{
43
24
    if ( unlikely(tb_init_done) )
44
0
        __trace_var(event, cycles, extra, extra_data);
45
24
}
Unexecuted instantiation: vpic.c:trace_var
Unexecuted instantiation: intr.c:trace_var
Unexecuted instantiation: svm.c:trace_var
Unexecuted instantiation: realmode.c:trace_var
Unexecuted instantiation: vmcs.c:trace_var
Unexecuted instantiation: vmx.c:trace_var
Unexecuted instantiation: vvmx.c:trace_var
Unexecuted instantiation: p2m.c:trace_var
Unexecuted instantiation: p2m-pt.c:trace_var
Unexecuted instantiation: p2m-ept.c:trace_var
Unexecuted instantiation: p2m-pod.c:trace_var
Unexecuted instantiation: common.c:trace_var
Unexecuted instantiation: multi.c:trace_var
Unexecuted instantiation: hap.c:trace_var
Unexecuted instantiation: nested_ept.c:trace_var
Unexecuted instantiation: emul-gate-op.c:trace_var
Unexecuted instantiation: emul-inv-op.c:trace_var
Unexecuted instantiation: emul-priv-op.c:trace_var
Unexecuted instantiation: hypercall.c:trace_var
Unexecuted instantiation: ro-page-fault.c:trace_var
46
47
void __trace_hypercall(uint32_t event, unsigned long op,
48
                       const xen_ulong_t *args);
49
50
/* Convenience macros for calling the trace function. */
51
#define TRACE_0D(_e)                            \
52
68
    do {                                        \
53
68
        trace_var(_e, 1, 0, NULL);              \
54
68
    } while ( 0 )
55
  
56
#define TRACE_1D(_e,d1)                                         \
57
18.4E
    do {                                                        \
58
18.4E
        if ( unlikely(tb_init_done) )                           \
59
0
        {                                                       \
60
0
            u32 _d[1];                                          \
61
0
            _d[0] = d1;                                         \
62
0
            __trace_var(_e, 1, sizeof(_d), _d);                 \
63
0
        }                                                       \
64
18.4E
    } while ( 0 )
65
 
66
#define TRACE_2D(_e,d1,d2)                                      \
67
10.6M
    do {                                                        \
68
10.6M
        if ( unlikely(tb_init_done) )                           \
69
0
        {                                                       \
70
0
            u32 _d[2];                                          \
71
0
            _d[0] = d1;                                         \
72
0
            _d[1] = d2;                                         \
73
0
            __trace_var(_e, 1, sizeof(_d), _d);                 \
74
0
        }                                                       \
75
10.6M
    } while ( 0 )
76
 
77
#define TRACE_3D(_e,d1,d2,d3)                                   \
78
340k
    do {                                                        \
79
340k
        if ( unlikely(tb_init_done) )                           \
80
0
        {                                                       \
81
0
            u32 _d[3];                                          \
82
0
            _d[0] = d1;                                         \
83
0
            _d[1] = d2;                                         \
84
0
            _d[2] = d3;                                         \
85
0
            __trace_var(_e, 1, sizeof(_d), _d);                 \
86
0
        }                                                       \
87
340k
    } while ( 0 )
88
 
89
#define TRACE_4D(_e,d1,d2,d3,d4)                                \
90
7.30M
    do {                                                        \
91
7.30M
        if ( unlikely(tb_init_done) )                           \
92
0
        {                                                       \
93
0
            u32 _d[4];                                          \
94
0
            _d[0] = d1;                                         \
95
0
            _d[1] = d2;                                         \
96
0
            _d[2] = d3;                                         \
97
0
            _d[3] = d4;                                         \
98
0
            __trace_var(_e, 1, sizeof(_d), _d);                 \
99
0
        }                                                       \
100
7.30M
    } while ( 0 )
101
 
102
#define TRACE_5D(_e,d1,d2,d3,d4,d5)                             \
103
0
    do {                                                        \
104
0
        if ( unlikely(tb_init_done) )                           \
105
0
        {                                                       \
106
0
            u32 _d[5];                                          \
107
0
            _d[0] = d1;                                         \
108
0
            _d[1] = d2;                                         \
109
0
            _d[2] = d3;                                         \
110
0
            _d[3] = d4;                                         \
111
0
            _d[4] = d5;                                         \
112
0
            __trace_var(_e, 1, sizeof(_d), _d);                 \
113
0
        }                                                       \
114
0
    } while ( 0 )
115
116
#define TRACE_6D(_e,d1,d2,d3,d4,d5,d6)                             \
117
2.10M
    do {                                                        \
118
2.10M
        if ( unlikely(tb_init_done) )                           \
119
0
        {                                                       \
120
0
            u32 _d[6];                                          \
121
0
            _d[0] = d1;                                         \
122
0
            _d[1] = d2;                                         \
123
0
            _d[2] = d3;                                         \
124
0
            _d[3] = d4;                                         \
125
0
            _d[4] = d5;                                         \
126
0
            _d[5] = d6;                                         \
127
0
            __trace_var(_e, 1, sizeof(_d), _d);                 \
128
0
        }                                                       \
129
2.10M
    } while ( 0 )
130
131
#endif /* __XEN_TRACE_H__ */