VirtualBox

Changeset 41247 in vbox


Ignore:
Timestamp:
May 10, 2012 8:07:11 PM (13 years ago)
Author:
vboxsync
Message:

More dtrace library stuff. On 64-bit solaris dtrace can now grok the library files (point it to them using the -L parameter).

Location:
trunk
Files:
5 edited
3 moved

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/cpumctx.h

    r41218 r41247  
    2727#define ___VBox_vmm_cpumctx_h
    2828
    29 #include <iprt/types.h>
    30 #include <iprt/x86.h>
     29#ifndef VBOX_FOR_DTRACE_LIB
     30# include <iprt/x86.h>
     31#else
     32# pragma D depends_on library x86.d
     33#endif
    3134
    3235
     
    8285 */
    8386#ifdef VBOX_FOR_DTRACE_LIB
    84 # define CPUM_UNION_NAME    u
     87# define CPUM_UNION_NAME(a_Nm)  a_Nm
    8588#elif defined(VBOX_WITHOUT_UNNAMED_UNIONS)
    86 # define CPUM_UNION_NAME    u
     89# define CPUM_UNION_NAME(a_Nm)  a_Nm
    8790#else
    88 # define CPUM_UNION_NAME
     91# define CPUM_UNION_NAME(a_Nm)
    8992#endif
    9093
     
    103106        uint32_t        edi;
    104107        uint64_t        rdi;
    105     } CPUM_UNION_NAME;
     108    } CPUM_UNION_NAME(rdi);
    106109    union
    107110    {
     
    109112        uint32_t        esi;
    110113        uint64_t        rsi;
    111     } CPUM_UNION_NAME;
     114    } CPUM_UNION_NAME(rsi);
    112115    union
    113116    {
     
    115118        uint32_t        ebp;
    116119        uint64_t        rbp;
    117     } CPUM_UNION_NAME;
     120    } CPUM_UNION_NAME(rbp);
    118121    union
    119122    {
     
    121124        uint32_t        eax;
    122125        uint64_t        rax;
    123     } CPUM_UNION_NAME;
     126    } CPUM_UNION_NAME(rax);
    124127    union
    125128    {
     
    127130        uint32_t        ebx;
    128131        uint64_t        rbx;
    129     } CPUM_UNION_NAME;
     132    } CPUM_UNION_NAME(rbx);
    130133    union
    131134    {
     
    133136        uint32_t        edx;
    134137        uint64_t        rdx;
    135     } CPUM_UNION_NAME;
     138    } CPUM_UNION_NAME(rdx);
    136139    union
    137140    {
     
    139142        uint32_t        ecx;
    140143        uint64_t        rcx;
    141     } CPUM_UNION_NAME;
     144    } CPUM_UNION_NAME(rcx);
    142145    union
    143146    {
     
    145148        uint32_t        esp;
    146149        uint64_t        rsp;
    147     } CPUM_UNION_NAME;
     150    } CPUM_UNION_NAME(rsp);
    148151    /* Note: lss esp, [] in the switcher needs some space, so we reserve it here instead of relying on the exact esp & ss layout as before. */
    149152    uint32_t            lss_esp;
     
    166169        X86EFLAGS       eflags;
    167170        X86RFLAGS       rflags;
    168     } CPUM_UNION_NAME;
     171    } CPUM_UNION_NAME(rflags);
    169172    union
    170173    {
     
    172175        uint32_t        eip;
    173176        uint64_t        rip;
    174     } CPUM_UNION_NAME;
     177    } CPUM_UNION_NAME(rip);
    175178
    176179    uint64_t            r8;
     
    221224        uint32_t        edi;
    222225        uint64_t        rdi;
    223     } CPUM_UNION_NAME;
     226    } CPUM_UNION_NAME(rdi);
    224227    union
    225228    {
     
    228231        uint32_t        esi;
    229232        uint64_t        rsi;
    230     } CPUM_UNION_NAME;
     233    } CPUM_UNION_NAME(rsi);
    231234    union
    232235    {
     
    234237        uint32_t        ebp;
    235238        uint64_t        rbp;
    236     } CPUM_UNION_NAME;
     239    } CPUM_UNION_NAME(rbp);
    237240    union
    238241    {
     
    241244        uint32_t        eax;
    242245        uint64_t        rax;
    243     } CPUM_UNION_NAME;
     246    } CPUM_UNION_NAME(rax);
    244247    union
    245248    {
     
    248251        uint32_t        ebx;
    249252        uint64_t        rbx;
    250     } CPUM_UNION_NAME;
     253    } CPUM_UNION_NAME(rbx);
    251254    union
    252255    {
     
    255258        uint32_t        edx;
    256259        uint64_t        rdx;
    257     } CPUM_UNION_NAME;
     260    } CPUM_UNION_NAME(rdx);
    258261    union
    259262    {
     
    262265        uint32_t        ecx;
    263266        uint64_t        rcx;
    264     } CPUM_UNION_NAME;
     267    } CPUM_UNION_NAME(rcx);
    265268    union
    266269    {
     
    268271        uint32_t        esp;
    269272        uint64_t        rsp;
    270     } CPUM_UNION_NAME;
     273    } CPUM_UNION_NAME(rsp);
    271274    /** @note lss esp, [] in the switcher needs some space, so we reserve it here
    272275     *        instead of relying on the exact esp & ss layout as before (prevented
     
    291294        X86EFLAGS       eflags;
    292295        X86RFLAGS       rflags;
    293     } CPUM_UNION_NAME;
     296    } CPUM_UNION_NAME(rflags);
    294297    union
    295298    {
     
    297300        uint32_t        eip;
    298301        uint64_t        rip;
    299     } CPUM_UNION_NAME;
     302    } CPUM_UNION_NAME(rip);
    300303
    301304    uint64_t            r8;
     
    423426        uint32_t        edi;
    424427        uint64_t        rdi;
    425     } CPUM_UNION_NAME;
     428    } CPUM_UNION_NAME(rdi);
    426429    union
    427430    {
    428431        uint32_t        esi;
    429432        uint64_t        rsi;
    430     } CPUM_UNION_NAME;
     433    } CPUM_UNION_NAME(rsi);
    431434    union
    432435    {
    433436        uint32_t        ebp;
    434437        uint64_t        rbp;
    435     } CPUM_UNION_NAME;
     438    } CPUM_UNION_NAME(rbp);
    436439    union
    437440    {
    438441        uint32_t        eax;
    439442        uint64_t        rax;
    440     } CPUM_UNION_NAME;
     443    } CPUM_UNION_NAME(rax);
    441444    union
    442445    {
    443446        uint32_t        ebx;
    444447        uint64_t        rbx;
    445     } CPUM_UNION_NAME;
     448    } CPUM_UNION_NAME(rbx);
    446449    union
    447450    {
    448451        uint32_t        edx;
    449452        uint64_t        rdx;
    450     } CPUM_UNION_NAME;
     453    } CPUM_UNION_NAME(rdx);
    451454    union
    452455    {
    453456        uint32_t        ecx;
    454457        uint64_t        rcx;
    455     } CPUM_UNION_NAME;
     458    } CPUM_UNION_NAME(rcx);
    456459    /** @note We rely on the exact layout, because we use lss esp, [] in the
    457460     *        switcher. */
     
    477480        X86EFLAGS       eflags;
    478481        X86RFLAGS       rflags;
    479     } CPUM_UNION_NAME;
     482    } CPUM_UNION_NAME(rflags);
    480483    union
    481484    {
    482485        uint32_t        eip;
    483486        uint64_t        rip;
    484     } CPUM_UNION_NAME;
     487    } CPUM_UNION_NAME(rip);
    485488
    486489    uint64_t            r8;
  • trunk/include/VBox/vmm/vm.h

    r41218 r41247  
    2727#define ___VBox_vmm_vm_h
    2828
    29 #include <VBox/types.h>
    30 #include <VBox/vmm/cpum.h>
    31 #include <VBox/vmm/stam.h>
    32 #include <VBox/vmm/vmapi.h>
    33 #include <VBox/vmm/vmm.h>
    34 #include <VBox/sup.h>
     29#ifndef VBOX_FOR_DTRACE_LIB
     30# include <VBox/types.h>
     31# include <VBox/vmm/cpum.h>
     32# include <VBox/vmm/stam.h>
     33# include <VBox/vmm/vmapi.h>
     34# include <VBox/vmm/vmm.h>
     35# include <VBox/sup.h>
     36#else
     37# pragma D depends_on library vbox-types.d
     38#endif
     39
    3540
    3641
     
    903908    /** @} */
    904909
     910#ifndef VBOX_FOR_DTRACE_LIB /** @todo VBoxCPP expression evaluation */
    905911#if HC_ARCH_BITS != 64
    906912    /** Padding - the unions must be aligned on a 64 bytes boundary and the unions
    907913     *  must start at the same offset on both 64-bit and 32-bit hosts. */
    908914    uint8_t                     abAlignment1[HC_ARCH_BITS == 32 ? 32 : 0];
     915#endif
    909916#endif
    910917
  • trunk/include/iprt/x86.h

    r40222 r41247  
    2929#define ___iprt_x86_h
    3030
    31 #include <iprt/types.h>
    32 #include <iprt/assert.h>
     31#ifndef VBOX_FOR_DTRACE_LIB
     32# include <iprt/types.h>
     33# include <iprt/assert.h>
     34#else
     35# pragma D depends_on library vbox-types.d
     36#endif
    3337
    3438/* Workaround for Solaris sys/regset.h defining CS, DS */
     
    10441048#define MSR_K7_PERFCTR3                     0xc0010007
    10451049
    1046 #define MSR_K8_HWCR                         0xc0010015
    1047 
    10481050/** K8 LSTAR - Long mode SYSCALL target (RIP). */
    10491051#define MSR_K8_LSTAR                        0xc0000082
     
    23102312    unsigned    u16OffsetHigh : 16;
    23112313} X86DESCGATE;
     2314#ifndef VBOX_FOR_DTRACE_LIB
    23122315AssertCompileSize(X86DESCGATE, 8);
     2316#endif
    23132317/** Pointer to a Call-, Interrupt-, Trap- or Task-gate descriptor entry. */
    23142318typedef X86DESCGATE *PX86DESCGATE;
     
    23382342    uint64_t        u;
    23392343} X86DESC;
     2344#ifndef VBOX_FOR_DTRACE_LIB
    23402345AssertCompileSize(X86DESC, 8);
     2346#endif
    23412347#pragma pack()
    23422348/** Pointer to descriptor table entry. */
     
    24962502    unsigned    u32Reserved : 32;
    24972503} X86DESC64GATE;
     2504#ifndef VBOX_FOR_DTRACE_LIB
    24982505AssertCompileSize(X86DESC64GATE, 16);
     2506#endif
    24992507/** Pointer to a Call-, Interrupt-, Trap- or Task-gate descriptor entry. */
    25002508typedef X86DESC64GATE *PX86DESC64GATE;
     
    25252533    uint64_t            au64[2];
    25262534} X86DESC64;
     2535#ifndef VBOX_FOR_DTRACE_LIB
    25272536AssertCompileSize(X86DESC64, 16);
     2537#endif
    25282538#pragma pack()
    25292539/** Pointer to descriptor table entry. */
     
    27582768    RTSEL       selLdt;
    27592769} X86TSS16;
     2770#ifndef VBOX_FOR_DTRACE_LIB
    27602771AssertCompileSize(X86TSS16, 44);
     2772#endif
    27612773#pragma pack()
    27622774/** Pointer to a 16-bit task segment. */
     
    28852897/** Pointer to a const 64-bit task segment. */
    28862898typedef const X86TSS64 *PCX86TSS64;
     2899#ifndef VBOX_FOR_DTRACE_LIB
    28872900AssertCompileSize(X86TSS64, 136);
     2901#endif
    28882902
    28892903/** @} */
     
    30343048#define X86_MODRM_MOD_SMASK     UINT8_C(0x03)
    30353049#define X86_MODRM_MOD_SHIFT     6
     3050#ifndef VBOX_FOR_DTRACE_LIB
    30363051AssertCompile((X86_MODRM_RM_MASK | X86_MODRM_REG_MASK | X86_MODRM_MOD_MASK) == 0xff);
    30373052AssertCompile((X86_MODRM_REG_MASK >> X86_MODRM_REG_SHIFT) == X86_MODRM_REG_SMASK);
    30383053AssertCompile((X86_MODRM_MOD_MASK >> X86_MODRM_MOD_SHIFT) == X86_MODRM_MOD_SMASK);
     3054#endif
    30393055/** @} */
    30403056
     
    30483064#define X86_SIB_SCALE_SMASK   UINT8_C(0x03)
    30493065#define X86_SIB_SCALE_SHIFT   6
     3066#ifndef VBOX_FOR_DTRACE_LIB
    30503067AssertCompile((X86_SIB_BASE_MASK | X86_SIB_INDEX_MASK | X86_SIB_SCALE_MASK) == 0xff);
    30513068AssertCompile((X86_SIB_INDEX_MASK >> X86_SIB_INDEX_SHIFT) == X86_SIB_INDEX_SMASK);
    30523069AssertCompile((X86_SIB_SCALE_MASK >> X86_SIB_SCALE_SHIFT) == X86_SIB_SCALE_SMASK);
     3070#endif
    30533071/** @} */
    30543072
  • trunk/src/VBox/VMM/Makefile.kmk

    r41221 r41247  
    562562
    563563
    564 ifndef VBOX_ONLY_EXTPACKS
    565  if  defined(VBOX_WITH_DTRACE_R3) \
    566   || defined(VBOX_WITH_DTRACE_R0) \
    567   || defined(VBOX_WITH_DTRACE_RC)
     564if !defined(VBOX_ONLY_EXTPACKS) \
     565 && (   defined(VBOX_WITH_DTRACE_R3) \
     566     || defined(VBOX_WITH_DTRACE_R0) \
     567     || defined(VBOX_WITH_DTRACE_RC))
    568568 #
    569569 # Install the dtrace library files.
    570570 #
    571571 INSTALLS += VMMLibDTrace
    572  VMMLibDTrace_INST    = $(VBOX_INST_DTRACE_LIB)
     572 VMMLibDTrace_INST    = $(VBOX_INST_DTRACE_LIB)$(KBUILD_TARGET_ARCH)/
    573573 VMMLibDTrace_SOURCES = \
    574         dtrace/lib/types.d \
    575         dtrace/lib/$(KBUILD_TARGET_ARCH)/types.d=>$(KBUILD_TARGET_ARCH)/types.d \
    576         $(VMMLibDTrace_0_OUTDIR)/vm.d=>$(KBUILD_TARGET_ARCH)/vm.d \
    577         $(VMMLibDTrace_0_OUTDIR)/cpumctx.d=>$(KBUILD_TARGET_ARCH)/cpumctx.d \
     574        dtrace/lib/vbox-types.d \
     575        dtrace/lib/$(KBUILD_TARGET_ARCH)/vbox-arch-types.d \
     576        $(VMMLibDTrace_0_OUTDIR)/vm.d \
     577        $(VMMLibDTrace_0_OUTDIR)/cpumctx.d \
     578        $(VMMLibDTrace_0_OUTDIR)/x86.d \
    578579
    579580
     
    589590                -D RT_C_DECLS_BEGIN= \
    590591                -D RT_C_DECLS_END= \
     592                -D 'RCPTRTYPE(a_Type)=RTRCPTR' \
     593                -D 'R3PTRTYPE(a_Type)=RTR3PTR' \
     594                -D 'R0PTRTYPE(a_Type)=a_Type' \
     595                -D 'AssertCompile(a_Expr)=' \
     596                -D 'AssertCompileSize(a_Stuct, a_Size)=' \
    591597                $$(addprefix -D ,$$(DEFS) $$(DEFS.$$(KBUILD_TARGET)) $$(DEFS.$(KBUILD_TARGET_ARCH))) $$< $$@
    592598 endef
    593599 $(evalcall2 def_vmm_lib_dtrace_preprocess,vm.d,$(PATH_ROOT)/include/VBox/vmm/vm.h)
    594600 $(evalcall2 def_vmm_lib_dtrace_preprocess,cpumctx.d,$(PATH_ROOT)/include/VBox/vmm/cpumctx.h)
    595 
    596  endif
     601 $(evalcall2 def_vmm_lib_dtrace_preprocess,x86.d,$(PATH_ROOT)/include/iprt/x86.h)
     602
    597603endif
    598604
  • trunk/src/VBox/VMM/VMMR3/EM.cpp

    r40377 r41247  
    21172117            if (enmOldState != enmNewState)
    21182118            {
    2119                 VBOXVMM_EM_STATE_CHANGED(pVCpu, enmOldState, enmNewState, rc);
     2119                VBOXVMM_EM_STATE_CHANGED((PVMCPU)VM_R0_ADDR(pVM, pVCpu), enmOldState, enmNewState, rc);
    21202120
    21212121                /* Clear MWait flags. */
  • trunk/src/VBox/VMM/dtrace/lib/amd64/vbox-arch-types.d

    r41225 r41247  
    3030typedef uint64_t    RTHCPTR;
    3131
     32
     33
     34typedef union RTFLOAT80U
     35{
     36    uint16_t    au16[5];
     37} RTFLOAT80U;
     38
     39typedef union RTFLOAT80U2
     40{
     41    uint16_t    au16[5];
     42} RTFLOAT80U2;
     43
     44typedef struct uint128_t
     45{
     46    uint64_t    au64[2];
     47} uint128_t;
     48
     49
  • trunk/src/VBox/VMM/dtrace/lib/vbox-types.d

    r41225 r41247  
    3030 * These are taken from a variation of VBox and IPRT headers.
    3131 */
     32#pragma D depends_on library vbox-arch-types.d
    3233
    33 typedef uint32_t        VMCPUID;
    34 typedef uint32_t        RTCPUID;
    35 typedef struct UVMCPU  *PUVMCPU;
    36 typedef uintptr_t       PVMR3;
    37 typedef uint32_t        PVMRC;
    38 typedef struct VM      *PVMR0;
    39 typedef uintptr_t       RTNATIVETHREAD;
     34typedef uint16_t                RTSEL;
     35typedef uint32_t                RTRCPTR;
     36typedef uintptr_t               RTNATIVETHREAD;
     37typedef struct RTTHREADINT     *RTTHREAD;
     38typedef struct RTTRACEBUFINT   *RTTRACEBUF;
     39
     40
     41typedef uint32_t                VMSTATE;
     42typedef uint32_t                VMCPUID;
     43typedef uint32_t                RTCPUID;
     44typedef struct UVMCPU          *PUVMCPU;
     45typedef uintptr_t               PVMR3;
     46typedef uint32_t                PVMRC;
     47typedef struct VM              *PVMR0;
     48typedef struct SUPDRVSESSION   *PSUPDRVSESSION;
     49typedef struct UVM             *PUVM;
     50typedef struct VBOXGDTR
     51{
     52    uint16_t    cb;
     53    uint16_t    au16Addr[4];
     54} VBOXGDTR, VBOXIDTR;
    4055
    4156typedef struct STAMPROFILEADV
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette