VirtualBox

Changeset 36597 in vbox for trunk/src/VBox/Runtime/r3


Ignore:
Timestamp:
Apr 6, 2011 7:46:15 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
71042
Message:

IPRT: Implemented the memory tracker.

Location:
trunk/src/VBox/Runtime/r3
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r3/alloc.cpp

    r33269 r36597  
    3434#endif
    3535
     36/*#define RTMEMALLOC_USE_TRACKER*/
     37/* Don't enable the tracker when building the minimal IPRT. */
     38#ifdef RT_MINI
     39# undef RTMEMALLOC_USE_TRACKER
     40#endif
     41
    3642
    3743/*******************************************************************************
     
    7379#undef RTMemDupExTag
    7480
     81#undef RTALLOC_USE_EFENCE
     82
    7583
    7684RTDECL(void *)  RTMemTmpAllocTag(size_t cb, const char *pszTag) RT_NO_THROW
     
    178186#else /* !RTALLOC_USE_EFENCE */
    179187
    180 # ifdef RTALLOC_USE_TRACKER
    181     void *pv;
    182     if (!pvOld)
    183     {
    184         if (cbNew)
    185             pv = RTMemTrackerHdrAlloc(realloc(pvOld, cbNew + sizeof(RTMEMTRACKERHDR)), cbNew,
    186                                       pszTag, RTMEMTRACKERMETHOD_REALLOC);
    187         else
    188             pv = NULL;
    189     }
    190     else
    191     {
    192         RTMemTrackerHdrReallocPrep(pvOld, 0, pszTag, RTMEMTRACKERMETHOD_REALLOC);
    193         pv = RTMemTrackerHdrRealloc(realloc(pvOld, cbNew + sizeof(RTMEMTRACKERHDR)), cbNew, pvOld,
    194                                     pszTag, RTMEMTRACKERMETHOD_REALLOC);
    195     }
     188# ifdef RTMEMALLOC_USE_TRACKER
     189    void *pvRealOld  = RTMemTrackerHdrReallocPrep(pvOld, 0, pszTag);
     190    size_t cbRealNew = cbNew || !pvRealOld ? cbNew + sizeof(RTMEMTRACKERHDR) : 0;
     191    void *pvNew      = realloc(pvRealOld, cbRealNew);
     192    void *pv         = RTMemTrackerHdrReallocDone(pvNew, cbNew, pvOld, pszTag);
    196193# else
    197194    void *pv = realloc(pvOld, cbNew);
     
    213210        rtR3MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, ASMReturnAddress(), NULL, 0, NULL);
    214211#else
    215 # ifdef RTALLOC_USE_TRACKER
     212# ifdef RTMEMALLOC_USE_TRACKER
    216213        pv = RTMemTrackerHdrFree(pv, 0, NULL, RTMEMTRACKERMETHOD_FREE);
    217214# endif
  • trunk/src/VBox/Runtime/r3/posix/fileio-posix.cpp

    r34579 r36597  
    376376
    377377
     378RTFILE rtFileGetStandard(RTHANDLESTD enmStdHandle)
     379{
     380    int fd;
     381    switch (enmStdHandle)
     382    {
     383        case RTHANDLESTD_INPUT:  fd = 0; break;
     384        case RTHANDLESTD_OUTPUT: fd = 1; break;
     385        case RTHANDLESTD_ERROR:  fd = 2; break;
     386            break;
     387        default:
     388            AssertFailedReturn(NIL_RTFILE);
     389    }
     390
     391    struct stat st;
     392    int rc = fstat(fd, &st);
     393    if (rc == -1)
     394        return NIL_RTFILE;
     395    return (RTFILE)fd;
     396}
     397
     398
    378399RTR3DECL(int)  RTFileDelete(const char *pszFilename)
    379400{
  • trunk/src/VBox/Runtime/r3/win/fileio-win.cpp

    r36367 r36597  
    349349
    350350
     351RTFILE rtFileGetStandard(RTHANDLESTD enmStdHandle)
     352{
     353    DWORD dwStdHandle;
     354    switch (enmStdHandle)
     355    {
     356        case RTHANDLESTD_INPUT:     dwStdHandle = STD_INPUT_HANDLE;  break;
     357        case RTHANDLESTD_OUTPUT:    dwStdHandle = STD_OUTPUT_HANDLE; break;
     358        case RTHANDLESTD_ERROR:     dwStdHandle = STD_ERROR_HANDLE;  break;
     359            break;
     360        default:
     361            AssertFailedReturn(NIL_RTFILE);
     362    }
     363
     364    HANDLE hHandle = GetStdHandle(dwStdHandle);
     365    if (hNative == INVALID_HANDLE_VALUE)
     366        return NIL_RTFILE;
     367
     368    RTFILE hFile = (RTFILE)(uintptr_t)hHandle;
     369    AssertReturn((HANDLE)(uintptr_t)hFile == hHandle, NIL_RTFILE);
     370    return hFile;
     371}
     372
     373
    351374RTR3DECL(int)  RTFileSeek(RTFILE File, int64_t offSeek, unsigned uMethod, uint64_t *poffActual)
    352375{
     
    405428    }
    406429
    407     /* 
    408      * If it's a console, we might bump into out of memory conditions in the 
    409      * ReadConsole call. 
     430    /*
     431     * If it's a console, we might bump into out of memory conditions in the
     432     * ReadConsole call.
    410433     */
    411434    DWORD dwErr = GetLastError();
     
    450473        return VINF_SUCCESS;
    451474    }
    452    
     475
    453476    return RTErrConvertFromWin32(dwErr);
    454477}
     
    491514    }
    492515
    493     /* 
    494      * If it's a console, we might bump into out of memory conditions in the 
    495      * WriteConsole call. 
     516    /*
     517     * If it's a console, we might bump into out of memory conditions in the
     518     * WriteConsole call.
    496519     */
    497520    DWORD dwErr = GetLastError();
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