VirtualBox

Changeset 19757 in vbox for trunk/include/iprt


Ignore:
Timestamp:
May 15, 2009 11:37:31 PM (16 years ago)
Author:
vboxsync
Message:

VMM,IPRT,DBGC: Debug address spaces.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/iprt/dbg.h

    r19561 r19757  
    4242/** NIL debug segment index. */
    4343#define NIL_RTDBGSEGIDX     UINT32_C(0xffffffff)
     44/** The last normal segment index. */
     45#define RTDBGSEGIDX_LAST    UINT32_C(0xffffffef)
    4446/** Special segment index that indicates that the offset is a relative
    4547 * virtual address (RVA). I.e. an offset from the start of the module. */
     
    144146
    145147/**
    146  * Destroys the address space.
    147  *
    148  * This means unlinking all the modules it currently contains, potentially
     148 * Retains a reference to the address space.
     149 *
     150 * @returns New reference count, UINT32_MAX on invalid handle (asserted).
     151 *
     152 * @param   hDbgAs          The address space handle.
     153 *
     154 * @remarks Will not take any locks.
     155 */
     156RTDECL(uint32_t) RTDbgAsRetain(RTDBGAS hDbgAs);
     157
     158/**
     159 * Release a reference to the address space.
     160 *
     161 * When the reference count reaches zero, the address space is destroyed.
     162 * That means unlinking all the modules it currently contains, potentially
    149163 * causing some or all of them to be destroyed as they are managed by
    150164 * reference counting.
    151165 *
    152  * @returns IPRT status code.
    153  *
    154  * @param   hDbgAs          The address space handle. A NIL handle will
    155  *                          be quietly ignored.
    156  */
    157 RTDECL(int) RTDbgAsDestroy(RTDBGAS hDbgAs);
     166 * @returns New reference count, UINT32_MAX on invalid handle (asserted).
     167 *
     168 * @param   hDbgAs          The address space handle. The NIL handle is quietly
     169 *                          ignored and 0 is returned.
     170 *
     171 * @remarks Will not take any locks.
     172 */
     173RTDECL(uint32_t) RTDbgAsRelease(RTDBGAS hDbgAs);
    158174
    159175/**
     
    164180 *
    165181 * @param   hDbgAs          The address space handle.
     182 *
     183 * @remarks Will not take any locks.
    166184 */
    167185RTDECL(const char *) RTDbgAsName(RTDBGAS hDbgAs);
     
    174192 *
    175193 * @param   hDbgAs          The address space handle.
     194 *
     195 * @remarks Will not take any locks.
    176196 */
    177197RTDECL(RTUINTPTR) RTDbgAsFirstAddr(RTDBGAS hDbgAs);
     
    184204 *
    185205 * @param   hDbgAs          The address space handle.
     206 *
     207 * @remarks Will not take any locks.
    186208 */
    187209RTDECL(RTUINTPTR) RTDbgAsLastAddr(RTDBGAS hDbgAs);
     
    196218 *
    197219 * @param   hDbgAs          The address space handle.
     220 *
     221 * @remarks Will not take any locks.
    198222 */
    199223RTDECL(uint32_t) RTDbgAsModuleCount(RTDBGAS hDbgAs);
     224
     225/** @name Flags for RTDbgAsModuleLink and RTDbgAsModuleLinkSeg
     226 * @{ */
     227/** Replace all conflicting module.
     228 * (The conflicting modules will be removed the address space and their
     229 * references released.) */
     230#define RTDBGASLINK_FLAGS_REPLACE       RT_BIT_32(0)
     231/** Mask containing the valid flags. */
     232#define RTDBGASLINK_FLAGS_VALID_MASK    UINT32_C(0x00000001)
     233/** @} */
    200234
    201235/**
     
    212246 * @param   hDbgMod         The module handle of the module to be linked in.
    213247 * @param   ImageAddr       The address to link the module at.
    214  */
    215 RTDECL(int) RTDbgAsModuleLink(RTDBGAS hDbgAs, RTDBGMOD hDbgMod, RTUINTPTR ImageAddr);
     248 * @param   fFlags          See RTDBGASLINK_FLAGS_*.
     249 */
     250RTDECL(int) RTDbgAsModuleLink(RTDBGAS hDbgAs, RTDBGMOD hDbgMod, RTUINTPTR ImageAddr, uint32_t fFlags);
    216251
    217252/**
     
    230265 *                          linked in.
    231266 * @param   SegAddr         The address to link the segment at.
    232  */
    233 RTDECL(int) RTDbgAsModuleLinkSeg(RTDBGAS hDbgAs, RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR SegAddr);
     267 * @param   fFlags          See RTDBGASLINK_FLAGS_*.
     268 */
     269RTDECL(int) RTDbgAsModuleLinkSeg(RTDBGAS hDbgAs, RTDBGMOD hDbgMod, RTDBGSEGIDX iSeg, RTUINTPTR SegAddr, uint32_t fFlags);
    234270
    235271/**
     
    414450 * @{
    415451 */
    416 RTDECL(int)         RTDbgModCreate(PRTDBGMOD phDbgMod, const char *pszName, const char *pszImgFile, const char *pszDbgFile);
    417 RTDECL(int)         RTDbgModDestroy(RTDBGMOD hDbgMod);
     452RTDECL(int)         RTDbgModCreate(PRTDBGMOD phDbgMod, const char *pszName, RTUINTPTR cb, uint32_t fFlags);
     453RTDECL(int)         RTDbgModCreateFromImage(PRTDBGMOD phDbgMod, const char *pszFilename, const char *pszName, uint32_t fFlags);
     454RTDECL(int)         RTDbgModCreateFromMap(PRTDBGMOD phDbgMod, const char *pszFilename, const char *pszName, RTUINTPTR uSubtrahend, uint32_t fFlags);
    418455RTDECL(uint32_t)    RTDbgModRetain(RTDBGMOD hDbgMod);
    419456RTDECL(uint32_t)    RTDbgModRelease(RTDBGMOD hDbgMod);
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