VirtualBox

source: vbox/trunk/src/VBox/VMM/VBoxVMM.d@ 69111

Last change on this file since 69111 was 69111, checked in by vboxsync, 7 years ago

(C) year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 21.7 KB
Line 
1/* $Id: VBoxVMM.d 69111 2017-10-17 14:26:02Z vboxsync $ */
2/** @file
3 * VBoxVMM - Static dtrace probes.
4 */
5
6/*
7 * Copyright (C) 2009-2017 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18provider vboxvmm
19{
20 probe em__state__changed(struct VMCPU *a_pVCpu, int a_enmOldState, int a_enmNewState, int a_rc);
21 /*^^VMM-ALT-TP: "%d -> %d (rc=%d)", a_enmOldState, a_enmNewState, a_rc */
22
23 probe em__state__unchanged(struct VMCPU *a_pVCpu, int a_enmState, int a_rc);
24 /*^^VMM-ALT-TP: "%d (rc=%d)", a_enmState, a_rc */
25
26 probe em__raw__run__pre(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
27 /*^^VMM-ALT-TP: "%04x:%08llx", (a_pCtx)->cs, (a_pCtx)->rip */
28
29 probe em__raw__run__ret(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, int a_rc);
30 /*^^VMM-ALT-TP: "%04x:%08llx rc=%d", (a_pCtx)->cs, (a_pCtx)->rip, (a_rc) */
31
32 probe em__ff__high(struct VMCPU *a_pVCpu, uint32_t a_fGlobal, uint32_t a_fLocal, int a_rc);
33 /*^^VMM-ALT-TP: "vm=%#x cpu=%#x rc=%d", (a_fGlobal), (a_fLocal), (a_rc) */
34
35 probe em__ff__all(struct VMCPU *a_pVCpu, uint32_t a_fGlobal, uint32_t a_fLocal, int a_rc);
36 /*^^VMM-ALT-TP: "vm=%#x cpu=%#x rc=%d", (a_fGlobal), (a_fLocal), (a_rc) */
37
38 probe em__ff__all__ret(struct VMCPU *a_pVCpu, int a_rc);
39 /*^^VMM-ALT-TP: "%d", (a_rc) */
40
41 probe em__ff__raw(struct VMCPU *a_pVCpu, uint32_t a_fGlobal, uint32_t a_fLocal);
42 /*^^VMM-ALT-TP: "vm=%#x cpu=%#x", (a_fGlobal), (a_fLocal) */
43
44 probe em__ff__raw_ret(struct VMCPU *a_pVCpu, int a_rc);
45 /*^^VMM-ALT-TP: "%d", (a_rc) */
46
47 probe pdm__irq__get( struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource, uint32_t a_iIrq);
48 probe pdm__irq__high(struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource);
49 probe pdm__irq__low( struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource);
50 probe pdm__irq__hilo(struct VMCPU *a_pVCpu, uint32_t a_uTag, uint32_t a_idSource);
51
52
53 probe r0__gvmm__vm__created(void *a_pGVM, void *a_pVM, uint32_t a_Pid, void *a_hEMT0, uint32_t a_cCpus);
54 probe r0__hmsvm__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitCode, struct SVMVMCB *a_pVmcb);
55 probe r0__hmvmx__vmexit(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_ExitReason, uint64_t a_ExitQualification);
56 probe r0__hmvmx__vmexit__noctx(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pIncompleteCtx, uint64_t a_ExitReason);
57
58 probe r0__vmm__return__to__ring3__rc(struct VMCPU *a_pVCpu, struct CPUMCTX *p_Ctx, int a_rc);
59 probe r0__vmm__return__to__ring3__hm(struct VMCPU *a_pVCpu, struct CPUMCTX *p_Ctx, int a_rc);
60
61
62 /** @name CPU Exception probes
63 * These probes will intercept guest CPU exceptions as best we
64 * can. In some execution modes some of these probes may also
65 * see non-guest exceptions as we don't try distiguish between
66 * virtualization and guest exceptions before firing the probes.
67 *
68 * Using these probes may have a performance impact on guest
69 * activities involving lots of exceptions.
70 * @{
71 */
72 /** \#DE - integer divide error. */
73 probe xcpt__de(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
74 /** \#DB - debug fault / trap. */
75 probe xcpt__db(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_dr6);
76 /** \#BP - breakpoint (INT3). */
77 probe xcpt__bp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
78 /** \#OF - overflow (INTO). */
79 probe xcpt__of(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
80 /** \#BR - bound range exceeded (BOUND). */
81 probe xcpt__br(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
82 /** \#UD - undefined opcode. */
83 probe xcpt__ud(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
84 /** \#NM - FPU not avaible and more. */
85 probe xcpt__nm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
86 /** \#DF - double fault. */
87 probe xcpt__df(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
88 /** \#TS - TSS related fault. */
89 probe xcpt__ts(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
90 /** \#NP - segment not present. */
91 probe xcpt__np(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
92 /** \#SS - stack segment fault. */
93 probe xcpt__ss(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
94 /** \#GP - general protection fault. */
95 probe xcpt__gp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
96 /** \#PF - page fault. */
97 probe xcpt__pf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr, uint64_t a_cr2);
98 /** \#MF - math fault (FPU). */
99 probe xcpt__mf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
100 /** \#AC - alignment check. */
101 probe xcpt__ac(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
102 /** \#XF - SIMD floating point exception. */
103 probe xcpt__xf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
104 /** \#VE - virtualization exception. */
105 probe xcpt__ve(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
106 /** \#SX - security exception. */
107 probe xcpt__sx(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
108 /** @} */
109
110
111 /** Software interrupt (INT XXh).
112 * It may be very difficult to implement this probe when using hardware
113 * virtualization, so maybe we have to drop it... */
114 probe int__software(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iInterrupt);
115 /** Hardware interrupt being dispatched.
116 *
117 * Relates to pdm__irq__get ...
118 */
119 probe int__hardware(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iInterrupt, uint32_t a_uTag, uint32_t a_idSource);
120
121 /** @name Instruction probes
122 * These are instructions normally related to VM exits. These
123 * probes differs from the exit probes in that we will try make
124 * these instructions cause exits and fire the probe whenever
125 * they are executed by the guest. This means some of these
126 * probes will have a noticable performance impact (like
127 * instr__pause).
128 * @{ */
129 /** Instruction: HALT */
130 probe instr__halt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
131 /** Instruction: MWAIT */
132 probe instr__mwait(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
133 /** Instruction: MONITOR */
134 probe instr__monitor(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
135 /** Instruction: CPUID instruction (missing stuff in raw-mode). */
136 probe instr__cpuid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t uLeaf, uint32_t uSubLeaf);
137 /** Instruction: INVD */
138 probe instr__invd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
139 /** Instruction: WBINVD */
140 probe instr__wbinvd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
141 /** Instruction: INVLPG */
142 probe instr__invlpg(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
143 /** Instruction: RDTSC */
144 probe instr__rdtsc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
145 /** Instruction: RDTSCP */
146 probe instr__rdtscp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
147 /** Instruction: RDPMC */
148 probe instr__rdpmc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
149 /** Instruction: RDMSR */
150 probe instr__rdmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr);
151 /** Instruction: WRMSR */
152 probe instr__wrmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr, uint64_t a_uValue);
153 /** Instruction: CRx read instruction (missing smsw in raw-mode,
154 * and reads in general in VT-x). */
155 probe instr__crx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
156 /** Instruction: CRx write instruction. */
157 probe instr__crx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
158 /** Instruction: DRx read instruction. */
159 probe instr__drx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
160 /** Instruction: DRx write instruction. */
161 probe instr__drx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
162 /** Instruction: PAUSE instruction (not in raw-mode). */
163 probe instr__pause(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
164 /** Instruction: XSETBV */
165 probe instr__xsetbv(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
166 /** Instruction: SIDT */
167 probe instr__sidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
168 /** Instruction: LIDT */
169 probe instr__lidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
170 /** Instruction: SGDT */
171 probe instr__sgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
172 /** Instruction: LGDT */
173 probe instr__lgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
174 /** Instruction: SLDT */
175 probe instr__sldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
176 /** Instruction: LLDT */
177 probe instr__lldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
178 /** Instruction: STR */
179 probe instr__str(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
180 /** Instruction: LTR */
181 probe instr__ltr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
182 /** Instruction: GETSEC */
183 probe instr__getsec(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
184 /** Instruction: RSM */
185 probe instr__rsm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
186 /** Instruction: RDRAND */
187 probe instr__rdrand(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
188 /** Instruction: RDSEED */
189 probe instr__rdseed(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
190 /** Instruction: XSAVES */
191 probe instr__xsaves(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
192 /** Instruction: XRSTORS */
193 probe instr__xrstors(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
194 /** Instruction: VMCALL (intel) or VMMCALL (AMD) instruction. */
195 probe instr__vmm__call(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
196
197 /** Instruction: VT-x VMCLEAR instruction. */
198 probe instr__vmx__vmclear(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
199 /** Instruction: VT-x VMLAUNCH */
200 probe instr__vmx__vmlaunch(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
201 /** Instruction: VT-x VMPTRLD */
202 probe instr__vmx__vmptrld(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
203 /** Instruction: VT-x VMPTRST */
204 probe instr__vmx__vmptrst(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
205 /** Instruction: VT-x VMREAD */
206 probe instr__vmx__vmread(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
207 /** Instruction: VT-x VMRESUME */
208 probe instr__vmx__vmresume(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
209 /** Instruction: VT-x VMWRITE */
210 probe instr__vmx__vmwrite(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
211 /** Instruction: VT-x VMXOFF */
212 probe instr__vmx__vmxoff(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
213 /** Instruction: VT-x VMXON */
214 probe instr__vmx__vmxon(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
215 /** Instruction: VT-x VMFUNC */
216 probe instr__vmx__vmfunc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
217 /** Instruction: VT-x INVEPT */
218 probe instr__vmx__invept(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
219 /** Instruction: VT-x INVVPID */
220 probe instr__vmx__invvpid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
221 /** Instruction: VT-x INVPCID */
222 probe instr__vmx__invpcid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
223
224 /** Instruction: AMD-V VMRUN */
225 probe instr__svm__vmrun(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
226 /** Instruction: AMD-V VMLOAD */
227 probe instr__svm__vmload(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
228 /** Instruction: AMD-V VMSAVE */
229 probe instr__svm__vmsave(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
230 /** Instruction: AMD-V STGI */
231 probe instr__svm__stgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
232 /** Instruction: AMD-V CLGI */
233 probe instr__svm__clgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
234 /** @} */
235
236
237 /** @name VM exit probes
238 * These are named exits with (in some cases at least) useful
239 * information as arguments. Unlike the instruction probes,
240 * these will not change the number of VM exits and have much
241 * less of an impact on VM performance.
242 * @{ */
243 /** VM Exit: Task switch. */
244 probe exit__task__switch(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
245 /** VM Exit: HALT instruction.
246 * @todo not yet implemented. */
247 probe exit__halt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
248 /** VM Exit: MWAIT instruction. */
249 probe exit__mwait(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
250 /** VM Exit: MONITOR instruction. */
251 probe exit__monitor(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
252 /** VM Exit: CPUID instruction (missing stuff in raw-mode). */
253 probe exit__cpuid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t uLeaf, uint32_t uSubLeaf);
254 /** VM Exit: INVD instruction. */
255 probe exit__invd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
256 /** VM Exit: WBINVD instruction. */
257 probe exit__wbinvd(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
258 /** VM Exit: INVLPG instruction. */
259 probe exit__invlpg(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
260 /** VM Exit: RDTSC instruction. */
261 probe exit__rdtsc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
262 /** VM Exit: RDTSCP instruction. */
263 probe exit__rdtscp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
264 /** VM Exit: RDPMC instruction. */
265 probe exit__rdpmc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
266 /** VM Exit: RDMSR instruction. */
267 probe exit__rdmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr);
268 /** VM Exit: WRMSR instruction. */
269 probe exit__wrmsr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_idMsr, uint64_t a_uValue);
270 /** VM Exit: CRx read instruction (missing smsw in raw-mode,
271 * and reads in general in VT-x). */
272 probe exit__crx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
273 /** VM Exit: CRx write instruction. */
274 probe exit__crx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
275 /** VM Exit: DRx read instruction. */
276 probe exit__drx__read(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
277 /** VM Exit: DRx write instruction. */
278 probe exit__drx__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iReg);
279 /** VM Exit: PAUSE instruction (not in raw-mode). */
280 probe exit__pause(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
281 /** VM Exit: XSETBV instruction. */
282 probe exit__xsetbv(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
283 /** VM Exit: SIDT instruction. */
284 probe exit__sidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
285 /** VM Exit: LIDT instruction. */
286 probe exit__lidt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
287 /** VM Exit: SGDT instruction. */
288 probe exit__sgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
289 /** VM Exit: LGDT instruction. */
290 probe exit__lgdt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
291 /** VM Exit: SLDT instruction. */
292 probe exit__sldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
293 /** VM Exit: LLDT instruction. */
294 probe exit__lldt(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
295 /** VM Exit: STR instruction. */
296 probe exit__str(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
297 /** VM Exit: LTR instruction. */
298 probe exit__ltr(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
299 /** VM Exit: GETSEC instruction. */
300 probe exit__getsec(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
301 /** VM Exit: RSM instruction. */
302 probe exit__rsm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
303 /** VM Exit: RDRAND instruction. */
304 probe exit__rdrand(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
305 /** VM Exit: RDSEED instruction. */
306 probe exit__rdseed(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
307 /** VM Exit: XSAVES instruction. */
308 probe exit__xsaves(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
309 /** VM Exit: XRSTORS instruction. */
310 probe exit__xrstors(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
311 /** VM Exit: VMCALL (intel) or VMMCALL (AMD) instruction. */
312 probe exit__vmm__call(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
313
314 /** VM Exit: VT-x VMCLEAR instruction. */
315 probe exit__vmx__vmclear(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
316 /** VM Exit: VT-x VMLAUNCH instruction. */
317 probe exit__vmx__vmlaunch(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
318 /** VM Exit: VT-x VMPTRLD instruction. */
319 probe exit__vmx__vmptrld(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
320 /** VM Exit: VT-x VMPTRST instruction. */
321 probe exit__vmx__vmptrst(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
322 /** VM Exit: VT-x VMREAD instruction. */
323 probe exit__vmx__vmread(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
324 /** VM Exit: VT-x VMRESUME instruction. */
325 probe exit__vmx__vmresume(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
326 /** VM Exit: VT-x VMWRITE instruction. */
327 probe exit__vmx__vmwrite(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
328 /** VM Exit: VT-x VMXOFF instruction. */
329 probe exit__vmx__vmxoff(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
330 /** VM Exit: VT-x VMXON instruction. */
331 probe exit__vmx__vmxon(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
332 /** VM Exit: VT-x VMFUNC instruction. */
333 probe exit__vmx__vmfunc(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
334 /** VM Exit: VT-x INVEPT instruction. */
335 probe exit__vmx__invept(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
336 /** VM Exit: VT-x INVVPID instruction. */
337 probe exit__vmx__invvpid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
338 /** VM Exit: VT-x INVPCID instruction. */
339 probe exit__vmx__invpcid(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
340 /** VM Exit: VT-x EPT violation. */
341 probe exit__vmx__ept__violation(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
342 /** VM Exit: VT-x EPT misconfiguration. */
343 probe exit__vmx__ept__misconfig(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
344 /** VM Exit: VT-x Virtual APIC page access. */
345 probe exit__vmx__vapic__access(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
346 /** VM Exit: VT-x Virtual APIC page write needing virtualizing. */
347 probe exit__vmx__vapic__write(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
348
349 /** VM Exit: AMD-V VMRUN instruction. */
350 probe exit__svm__vmrun(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
351 /** VM Exit: AMD-V VMLOAD instruction. */
352 probe exit__svm__vmload(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
353 /** VM Exit: AMD-V VMSAVE instruction. */
354 probe exit__svm__vmsave(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
355 /** VM Exit: AMD-V STGI instruction. */
356 probe exit__svm__stgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
357 /** VM Exit: AMD-V CLGI instruction. */
358 probe exit__svm__clgi(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
359 /** @} */
360
361
362 /** @name IPRT tracepoints we link in.
363 * @{ */
364 probe iprt__critsect__entered(void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, uint32_t a_cNestings);
365 probe iprt__critsect__leaving(void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, uint32_t a_cNestings);
366 probe iprt__critsect__waiting(void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, void *a_pvNativeThreadOwner);
367 probe iprt__critsect__busy( void *a_pvCritSect, const char *a_pszLaterNm, int32_t a_cLockers, void *a_pvNativeThreadOwner);
368
369 probe iprt__critsectrw__excl_entered(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
370 uint32_t a_cWaitingReaders, uint32_t cWriters);
371 probe iprt__critsectrw__excl_leaving(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
372 uint32_t a_cWaitingReaders, uint32_t cWriters);
373 probe iprt__critsectrw__excl_waiting(void *a_pvCritSect, const char *a_pszLaterNm, uint8_t a_fWriteMode, uint32_t a_cWaitingReaders,
374 uint32_t a_cReaders, uint32_t a_cWriters, void *a_pvNativeOwnerThread);
375 probe iprt__critsectrw__excl_busy( void *a_pvCritSect, const char *a_pszLaterNm, uint8_t a_fWriteMode, uint32_t a_cWaitingReaders,
376 uint32_t a_cReaders, uint32_t a_cWriters, void *a_pvNativeOwnerThread);
377 probe iprt__critsectrw__excl_entered_shared(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
378 uint32_t a_cWaitingReaders, uint32_t a_cWriters);
379 probe iprt__critsectrw__excl_leaving_shared(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cNestings,
380 uint32_t a_cWaitingReaders, uint32_t a_cWriters);
381 probe iprt__critsectrw__shared_entered(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cReaders, uint32_t a_cNestings);
382 probe iprt__critsectrw__shared_leaving(void *a_pvCritSect, const char *a_pszLaterNm, uint32_t a_cReaders, uint32_t a_cNestings);
383 probe iprt__critsectrw__shared_waiting(void *a_pvCritSect, const char *a_pszLaterNm, void *a_pvNativeThreadOwner,
384 uint32_t cWaitingReaders, uint32_t cWriters);
385 probe iprt__critsectrw__shared_busy( void *a_pvCritSect, const char *a_pszLaterNm, void *a_pvNativeThreadOwner,
386 uint32_t a_cWaitingReaders, uint32_t a_cWriters);
387
388 /** @} */
389};
390
391#pragma D attributes Evolving/Evolving/Common provider vboxvmm provider
392#pragma D attributes Private/Private/Unknown provider vboxvmm module
393#pragma D attributes Private/Private/Unknown provider vboxvmm function
394#pragma D attributes Evolving/Evolving/Common provider vboxvmm name
395#pragma D attributes Evolving/Evolving/Common provider vboxvmm args
396
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use