VirtualBox

Changeset 39154 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Oct 31, 2011 3:36:29 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
74616
Message:

IOM: Added flags for dropping into the vbox debugger on complicated MMIO accesses. DBGF: some namespace cleanups.

Location:
trunk/include/VBox/vmm
Files:
2 edited

Legend:

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

    r38838 r39154  
    5454
    5555
     56#ifdef IN_RING3
     57
    5658/**
    5759 * Mixed address.
     
    124126VMMR3DECL(PDBGFADDRESS) DBGFR3AddrSub(PDBGFADDRESS pAddress, RTGCUINTPTR uSubtrahend);
    125127
     128#endif /* IN_RING3 */
    126129
    127130
     
    265268typedef const DBGFEVENT *PCDBGFEVENT;
    266269
     270#ifdef IN_RING3 /* The event API only works in ring-3. */
    267271
    268272/** @def DBGFSTOP
     
    272276 * @param   pVM     VM Handle.
    273277 */
    274 #ifdef VBOX_STRICT
    275 # define DBGFSTOP(pVM)  DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, __FILE__, __LINE__, __PRETTY_FUNCTION__, NULL)
    276 #else
    277 # define DBGFSTOP(pVM)  VINF_SUCCESS
    278 #endif
     278# ifdef VBOX_STRICT
     279#  define DBGFSTOP(pVM)  DBGFR3EventSrc(pVM, DBGFEVENT_DEV_STOP, __FILE__, __LINE__, __PRETTY_FUNCTION__, NULL)
     280# else
     281#  define DBGFSTOP(pVM)  VINF_SUCCESS
     282# endif
    279283
    280284VMMR3DECL(int)  DBGFR3Init(PVM pVM);
     
    296300VMMR3DECL(int)  DBGFR3Step(PVM pVM, VMCPUID idCpu);
    297301VMMR3DECL(int)  DBGFR3PrgStep(PVMCPU pVCpu);
     302
     303#endif /* IN_RING3 */
     304
    298305
    299306
     
    377384typedef const DBGFBP *PCDBGFBP;
    378385
    379 
     386#ifdef IN_RING3 /* The breakpoint management API is only available in ring-3. */
    380387VMMR3DECL(int)  DBGFR3BpSet(PVM pVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable, uint32_t *piBp);
    381388VMMR3DECL(int)  DBGFR3BpSetReg(PVM pVM, PCDBGFADDRESS pAddress, uint64_t iHitTrigger, uint64_t iHitDisable,
     
    399406
    400407VMMR3DECL(int)          DBGFR3BpEnum(PVM pVM, PFNDBGFBPENUM pfnCallback, void *pvUser);
     408#endif /* IN_RING3 */
     409
    401410VMMDECL(RTGCUINTREG)    DBGFBpGetDR7(PVM pVM);
    402411VMMDECL(RTGCUINTREG)    DBGFBpGetDR0(PVM pVM);
     
    407416
    408417
    409 
     418#ifdef IN_RING3 /* The CPU mode API only works in ring-3. */
    410419VMMR3DECL(CPUMMODE)     DBGFR3CpuGetMode(PVM pVM, VMCPUID idCpu);
    411 
    412 
    413 
     420#endif
     421
     422
     423
     424#ifdef IN_RING3 /* The info callbacks API only works in ring-3. */
    414425
    415426/**
     
    551562VMMR3DECL(PCDBGFINFOHLP)    DBGFR3InfoLogRelHlp(void);
    552563
    553 
    554 
     564#endif /* IN_RING3 */
     565
     566
     567#ifdef IN_RING3 /* The log contrl API only works in ring-3. */
    555568VMMR3DECL(int) DBGFR3LogModifyGroups(PVM pVM, const char *pszGroupSettings);
    556569VMMR3DECL(int) DBGFR3LogModifyFlags(PVM pVM, const char *pszFlagSettings);
    557570VMMR3DECL(int) DBGFR3LogModifyDestinations(PVM pVM, const char *pszDestSettings);
    558 
    559 
     571#endif /* IN_RING3 */
     572
     573#ifdef IN_RING3 /* The debug information management APIs only works in ring-3. */
    560574
    561575/** Max length (including '\\0') of a symbol name. */
     
    621635/** The last special one. */
    622636#define DBGF_AS_LAST                DBGF_AS_GLOBAL
     637#endif
    623638/** The number of special address space handles. */
    624639#define DBGF_AS_COUNT               (6U)
     640#ifdef IN_RING3
    625641/** Converts an alias handle to an array index. */
    626642#define DBGF_AS_ALIAS_2_INDEX(hAlias) \
     
    663679VMMR3DECL(void)         DBGFR3LineFree(PDBGFLINE pLine);
    664680
     681#endif /* IN_RING3 */
     682
     683#ifdef IN_RING3 /* The stack API only works in ring-3. */
    665684
    666685/**
     
    795814/** Set if the content of the frame is filled in by DBGFR3StackWalk() and can be used
    796815 * to construct the next frame. */
    797 #define DBGFSTACKFRAME_FLAGS_ALL_VALID RT_BIT(0)
     816# define DBGFSTACKFRAME_FLAGS_ALL_VALID RT_BIT(0)
    798817/** This is the last stack frame we can read.
    799818 * This flag is not set if the walk stop because of max dept or recursion. */
    800 #define DBGFSTACKFRAME_FLAGS_LAST       RT_BIT(1)
     819# define DBGFSTACKFRAME_FLAGS_LAST      RT_BIT(1)
    801820/** This is the last record because we detected a loop. */
    802 #define DBGFSTACKFRAME_FLAGS_LOOP       RT_BIT(2)
     821# define DBGFSTACKFRAME_FLAGS_LOOP      RT_BIT(2)
    803822/** This is the last record because we reached the maximum depth. */
    804 #define DBGFSTACKFRAME_FLAGS_MAX_DEPTH RT_BIT(3)
     823# define DBGFSTACKFRAME_FLAGS_MAX_DEPTH RT_BIT(3)
    805824/** 16-bit frame. */
    806 #define DBGFSTACKFRAME_FLAGS_16BIT      RT_BIT(4)
     825# define DBGFSTACKFRAME_FLAGS_16BIT     RT_BIT(4)
    807826/** 32-bit frame. */
    808 #define DBGFSTACKFRAME_FLAGS_32BIT      RT_BIT(5)
     827# define DBGFSTACKFRAME_FLAGS_32BIT     RT_BIT(5)
    809828/** 64-bit frame. */
    810 #define DBGFSTACKFRAME_FLAGS_64BIT      RT_BIT(6)
     829# define DBGFSTACKFRAME_FLAGS_64BIT     RT_BIT(6)
    811830/** @} */
    812831
     
    835854VMMR3DECL(void)             DBGFR3StackWalkEnd(PCDBGFSTACKFRAME pFirstFrame);
    836855
    837 
    838 
     856#endif /* IN_RING3 */
     857
     858
     859#ifdef IN_RING3 /* The disassembly API only works in ring-3. */
    839860
    840861/** Flags to pass to DBGFR3DisasInstrEx().
     
    900921 * @thread Any EMT.
    901922 */
    902 #ifdef LOG_ENABLED
    903 # define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) \
     923# ifdef LOG_ENABLED
     924#  define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) \
    904925    do { \
    905926        if (LogIsEnabled()) \
    906927            DBGFR3DisasInstrLogInternal(pVCpu, Sel, GCPtr); \
    907928    } while (0)
    908 #else
    909 # define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) do { } while (0)
     929# else
     930#  define DBGFR3DisasInstrLog(pVCpu, Sel, GCPtr) do { } while (0)
     931# endif
    910932#endif
    911933
    912934
     935#ifdef IN_RING3
    913936VMMR3DECL(int) DBGFR3MemScan(PVM pVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, RTGCUINTPTR cbRange, RTGCUINTPTR uAlign,
    914937                             const void *pvNeedle, size_t cbNeedle, PDBGFADDRESS pHitAddress);
     
    916939VMMR3DECL(int) DBGFR3MemReadString(PVM pVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, char *pszBuf, size_t cbBuf);
    917940VMMR3DECL(int) DBGFR3MemWrite(PVM pVM, VMCPUID idCpu, PCDBGFADDRESS pAddress, void const *pvBuf, size_t cbRead);
     941#endif
    918942
    919943
  • trunk/include/VBox/vmm/iom.h

    r39111 r39154  
    120120#define IOMMMIO_FLAGS_WRITE_MODE                        UINT32_C(0x00000070)
    121121
     122/** Whether to do a DBGSTOP on complicated reads.
     123 * What this includes depends on the read mode, but generally all misaligned
     124 * reads as well as word and byte reads and maybe qword reads. */
     125#define IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_READ       UINT32_C(0x00000100)
     126/** Whether to do a DBGSTOP on complicated writes.
     127 * This depends on the write mode, but generally all writes where we have to
     128 * supply bytes (zero them or read them). */
     129#define IOMMMIO_FLAGS_DBGSTOP_ON_COMPLICATED_WRITE      UINT32_C(0x00000200)
     130
    122131/** Mask of valid flags. */
    123 #define IOMMMIO_FLAGS_VALID_MASK                        UINT32_C(0x00000073)
     132#define IOMMMIO_FLAGS_VALID_MASK                        UINT32_C(0x00000373)
    124133/** @} */
    125134
Note: See TracChangeset for help on using the changeset viewer.

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