4 #include "event-parse.h"
6 #define __HYPERVISOR_set_trap_table 0
7 #define __HYPERVISOR_mmu_update 1
8 #define __HYPERVISOR_set_gdt 2
9 #define __HYPERVISOR_stack_switch 3
10 #define __HYPERVISOR_set_callbacks 4
11 #define __HYPERVISOR_fpu_taskswitch 5
12 #define __HYPERVISOR_sched_op_compat 6
13 #define __HYPERVISOR_dom0_op 7
14 #define __HYPERVISOR_set_debugreg 8
15 #define __HYPERVISOR_get_debugreg 9
16 #define __HYPERVISOR_update_descriptor 10
17 #define __HYPERVISOR_memory_op 12
18 #define __HYPERVISOR_multicall 13
19 #define __HYPERVISOR_update_va_mapping 14
20 #define __HYPERVISOR_set_timer_op 15
21 #define __HYPERVISOR_event_channel_op_compat 16
22 #define __HYPERVISOR_xen_version 17
23 #define __HYPERVISOR_console_io 18
24 #define __HYPERVISOR_physdev_op_compat 19
25 #define __HYPERVISOR_grant_table_op 20
26 #define __HYPERVISOR_vm_assist 21
27 #define __HYPERVISOR_update_va_mapping_otherdomain 22
28 #define __HYPERVISOR_iret 23 /* x86 only */
29 #define __HYPERVISOR_vcpu_op 24
30 #define __HYPERVISOR_set_segment_base 25 /* x86/64 only */
31 #define __HYPERVISOR_mmuext_op 26
32 #define __HYPERVISOR_acm_op 27
33 #define __HYPERVISOR_nmi_op 28
34 #define __HYPERVISOR_sched_op 29
35 #define __HYPERVISOR_callback_op 30
36 #define __HYPERVISOR_xenoprof_op 31
37 #define __HYPERVISOR_event_channel_op 32
38 #define __HYPERVISOR_physdev_op 33
39 #define __HYPERVISOR_hvm_op 34
40 #define __HYPERVISOR_tmem_op 38
42 /* Architecture-specific hypercall definitions. */
43 #define __HYPERVISOR_arch_0 48
44 #define __HYPERVISOR_arch_1 49
45 #define __HYPERVISOR_arch_2 50
46 #define __HYPERVISOR_arch_3 51
47 #define __HYPERVISOR_arch_4 52
48 #define __HYPERVISOR_arch_5 53
49 #define __HYPERVISOR_arch_6 54
50 #define __HYPERVISOR_arch_7 55
52 #define N(x) [__HYPERVISOR_##x] = "("#x")"
53 static const char *xen_hypercall_names
[] = {
69 N(event_channel_op_compat
),
75 N(update_va_mapping_otherdomain
),
89 /* Architecture-specific hypercall definitions. */
101 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
103 static const char *xen_hypercall_name(unsigned op
)
105 if (op
< ARRAY_SIZE(xen_hypercall_names
) &&
106 xen_hypercall_names
[op
] != NULL
)
107 return xen_hypercall_names
[op
];
112 unsigned long long process_xen_hypercall_name(struct trace_seq
*s
,
113 unsigned long long *args
)
115 unsigned int op
= args
[0];
117 trace_seq_printf(s
, "%s", xen_hypercall_name(op
));
121 int PEVENT_PLUGIN_LOADER(struct pevent
*pevent
)
123 pevent_register_print_function(pevent
,
124 process_xen_hypercall_name
,
125 PEVENT_FUNC_ARG_STRING
,
126 "xen_hypercall_name",
128 PEVENT_FUNC_ARG_VOID
);
132 void PEVENT_PLUGIN_UNLOADER(struct pevent
*pevent
)
134 pevent_unregister_print_function(pevent
, process_xen_hypercall_name
,
135 "xen_hypercall_name");