1 | /* $Id: VBoxVMM.d 58939 2015-12-01 14:25:16Z vboxsync $ */
|
---|
2 | /** @file
|
---|
3 | * VBoxVMM - Static dtrace probes.
|
---|
4 | */
|
---|
5 |
|
---|
6 | /*
|
---|
7 | * Copyright (C) 2009-2015 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 |
|
---|
18 | provider 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 | /** \#DE - integer divide error. */
|
---|
63 | probe xcpt__de(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
64 | /** \#DB - debug fault / trap. */
|
---|
65 | probe xcpt__db(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint64_t a_dr6);
|
---|
66 | /** \#BP - breakpoint (INT3). */
|
---|
67 | probe xcpt__bp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
68 | /** \#OF - overflow (INTO). */
|
---|
69 | probe xcpt__of(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
70 | /** \#BR - bound range exceeded (BOUND). */
|
---|
71 | probe xcpt__br(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
72 | /** \#UD - undefined opcode. */
|
---|
73 | probe xcpt__ud(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
74 | /** \#NM - FPU not avaible and more. */
|
---|
75 | probe xcpt__nm(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
76 | /** \#DF - double fault. */
|
---|
77 | probe xcpt__df(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
78 | /** \#TS - TSS related fault. */
|
---|
79 | probe xcpt__ts(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
|
---|
80 | /** \#NP - segment not present. */
|
---|
81 | probe xcpt__np(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
|
---|
82 | /** \#SS - stack segment fault. */
|
---|
83 | probe xcpt__ss(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
|
---|
84 | /** \#GP - general protection fault. */
|
---|
85 | probe xcpt__gp(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
|
---|
86 | /** \#PG - page fault. */
|
---|
87 | probe xcpt__pg(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
|
---|
88 | /** \#MF - math fault (FPU). */
|
---|
89 | probe xcpt__mf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
90 | /** \#AC - alignment check. */
|
---|
91 | probe xcpt__ac(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
92 | /** \#XF - SIMD floating point exception. */
|
---|
93 | probe xcpt__xf(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
94 | /** \#VE - virtualization exception. */
|
---|
95 | probe xcpt__ve(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx);
|
---|
96 | /** \#SX - security exception. */
|
---|
97 | probe xcpt__sx(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint32_t a_uErr);
|
---|
98 |
|
---|
99 | /** Software interrupt (INT XXh). */
|
---|
100 | probe int__software(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iInterrupt);
|
---|
101 | /** Hardware interrupt being dispatched. */
|
---|
102 | probe int__hardware(struct VMCPU *a_pVCpu, struct CPUMCTX *a_pCtx, uint8_t a_iInterrupt, uint32_t a_uTag, uint32_t a_idSource);
|
---|
103 |
|
---|
104 | };
|
---|
105 |
|
---|
106 | #pragma D attributes Evolving/Evolving/Common provider vboxvmm provider
|
---|
107 | #pragma D attributes Private/Private/Unknown provider vboxvmm module
|
---|
108 | #pragma D attributes Private/Private/Unknown provider vboxvmm function
|
---|
109 | #pragma D attributes Evolving/Evolving/Common provider vboxvmm name
|
---|
110 | #pragma D attributes Evolving/Evolving/Common provider vboxvmm args
|
---|
111 |
|
---|