Changeset 66740 in vbox for trunk/src/VBox/Runtime/common/vfs
- Timestamp:
- May 2, 2017 6:45:22 AM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 115144
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/vfs/vfsbase.cpp
r66738 r66740 363 363 uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); 364 364 AssertMsg(cRefs > 1 && cRefs < _1M, ("%#x %p %d\n", cRefs, pThis, pThis->enmType)); 365 return cRefs; 366 } 367 368 369 RTDECL(uint32_t) RTVfsLockRetainDebug(RTVFSLOCK hLock, RT_SRC_POS_DECL) 370 { 371 RTVFSLOCKINTERNAL *pThis = hLock; 372 AssertPtrReturn(pThis, UINT32_MAX); 373 AssertReturn(pThis->enmType > RTVFSLOCKTYPE_INVALID && pThis->enmType < RTVFSLOCKTYPE_END, UINT32_MAX); 374 375 uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); 376 AssertMsg(cRefs > 1 && cRefs < _1M, ("%#x %p %d\n", cRefs, pThis, pThis->enmType)); 377 LogFlow(("RTVfsLockRetainDebug(%p) -> %d; caller: %s %s(%u)\n", hLock, cRefs, pszFunction, pszFile, iLine)); 378 RT_SRC_POS_NOREF(); 365 379 return cRefs; 366 380 } … … 783 797 } 784 798 785 799 /** 800 * Internal object retainer that asserts sanity in strict builds. 801 * 802 * @returns The new reference count. 803 * @param pThis The base object handle data. 804 */ 805 DECLINLINE(uint32_t) rtVfsObjRetainDebug(RTVFSOBJINTERNAL *pThis, const char *pszApi, RT_SRC_POS_DECL) 806 { 807 uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs); 808 AssertMsg(cRefs > 1 && cRefs < _1M, 809 ("%#x %p ops=%p %s (%d)\n", cRefs, pThis, pThis->pOps, pThis->pOps->pszName, pThis->pOps->enmType)); 810 LogFlow(("%s(%p/%p) -> %2d; caller: %s %s(%s) \n", pszApi, pThis, pThis->pvThis, cRefs, pszFunction, pszFile, iLine)); 811 RT_SRC_POS_NOREF(); RT_NOREF(pszApi); 812 return cRefs; 813 } 814 815 816 #ifdef DEBUG 817 # undef RTVfsObjRetain 818 #endif 786 819 RTDECL(uint32_t) RTVfsObjRetain(RTVFSOBJ hVfsObj) 787 820 { … … 791 824 792 825 return rtVfsObjRetain(pThis); 826 } 827 #ifdef DEBUG 828 # define RTVfsObjRetain(hVfsObj) RTVfsObjRetainDebug(hVfsObj, RT_SRC_POS) 829 #endif 830 831 832 RTDECL(uint32_t) RTVfsObjRetainDebug(RTVFSOBJ hVfsObj, RT_SRC_POS_DECL) 833 { 834 RTVFSOBJINTERNAL *pThis = hVfsObj; 835 AssertPtrReturn(pThis, UINT32_MAX); 836 AssertReturn(pThis->uMagic == RTVFSOBJ_MAGIC, UINT32_MAX); 837 838 return rtVfsObjRetainDebug(pThis, "RTVfsObjRetainDebug", RT_SRC_POS_ARGS); 793 839 } 794 840 … … 902 948 { 903 949 rtVfsObjRetainVoid(pThis); 950 LogFlow(("RTVfsObjToVfs(%p) -> %p\n", pThis, RT_FROM_MEMBER(pThis, RTVFSINTERNAL, Base))); 904 951 return RT_FROM_MEMBER(pThis, RTVFSINTERNAL, Base); 905 952 } … … 1009 1056 1010 1057 rtVfsObjRetainVoid(pThis); 1058 LogFlow(("RTVfsObjFromVfs(%p) -> %p\n", hVfs, pThis)); 1011 1059 return pThis; 1012 1060 } … … 1687 1735 } 1688 1736 1689 1737 #ifdef DEBUG 1738 # undef RTVfsRetain 1739 #endif 1690 1740 RTDECL(uint32_t) RTVfsRetain(RTVFS hVfs) 1691 1741 { … … 1696 1746 LogFlow(("RTVfsRetain(%p/%p) -> %d\n", pThis, pThis->Base.pvThis, cRefs)); 1697 1747 return cRefs; 1748 } 1749 #ifdef DEBUG 1750 # define RTVfsRetain(hVfs) RTVfsRetainDebug(hVfs, RT_SRC_POS) 1751 #endif 1752 1753 1754 RTDECL(uint32_t) RTVfsRetainDebug(RTVFS hVfs, RT_SRC_POS_DECL) 1755 { 1756 RTVFSINTERNAL *pThis = hVfs; 1757 AssertPtrReturn(pThis, UINT32_MAX); 1758 AssertReturn(pThis->uMagic == RTVFS_MAGIC, UINT32_MAX); 1759 RT_SRC_POS_NOREF(); 1760 return rtVfsObjRetainDebug(&pThis->Base, "RTVfsRetainDebug", RT_SRC_POS_ARGS); 1698 1761 } 1699 1762 … … 1806 1869 1807 1870 1871 #ifdef DEBUG 1872 # undef RTVfsFsStrmRetain 1873 #endif 1808 1874 RTDECL(uint32_t) RTVfsFsStrmRetain(RTVFSFSSTREAM hVfsFss) 1809 1875 { … … 1812 1878 AssertReturn(pThis->uMagic == RTVFSFSSTREAM_MAGIC, UINT32_MAX); 1813 1879 return rtVfsObjRetain(&pThis->Base); 1880 } 1881 #ifdef DEBUG 1882 # define RTVfsFsStrmRetain(hVfsFss) RTVfsFsStrmRetainDebug(hVfsFss, RT_SRC_POS) 1883 #endif 1884 1885 1886 RTDECL(uint32_t) RTVfsFsStrmRetainDebug(RTVFSFSSTREAM hVfsFss, RT_SRC_POS_DECL) 1887 { 1888 RTVFSFSSTREAMINTERNAL *pThis = hVfsFss; 1889 AssertPtrReturn(pThis, UINT32_MAX); 1890 AssertReturn(pThis->uMagic == RTVFSFSSTREAM_MAGIC, UINT32_MAX); 1891 return rtVfsObjRetainDebug(&pThis->Base, "RTVfsFsStrmRetain", RT_SRC_POS_ARGS); 1814 1892 } 1815 1893 … … 1909 1987 1910 1988 1989 #ifdef DEBUG 1990 # undef RTVfsDirRetain 1991 #endif 1911 1992 RTDECL(uint32_t) RTVfsDirRetain(RTVFSDIR hVfsDir) 1912 1993 { … … 1917 1998 LogFlow(("RTVfsDirRetain(%p/%p) -> %#x\n", pThis, pThis->Base.pvThis, cRefs)); 1918 1999 return cRefs; 2000 } 2001 #ifdef DEBUG 2002 # define RTVfsDirRetain(hVfsDir) RTVfsDirRetainDebug(hVfsDir, RT_SRC_POS) 2003 #endif 2004 2005 2006 RTDECL(uint32_t) RTVfsDirRetainDebug(RTVFSDIR hVfsDir, RT_SRC_POS_DECL) 2007 { 2008 RTVFSDIRINTERNAL *pThis = hVfsDir; 2009 AssertPtrReturn(pThis, UINT32_MAX); 2010 AssertReturn(pThis->uMagic == RTVFSDIR_MAGIC, UINT32_MAX); 2011 return rtVfsObjRetainDebug(&pThis->Base, "RTVfsDirRetain", RT_SRC_POS_ARGS); 1919 2012 } 1920 2013 … … 2149 2242 2150 2243 2244 RTDECL(uint32_t) RTVfsSymlinkRetainDebug(RTVFSSYMLINK hVfsSym, RT_SRC_POS_DECL) 2245 { 2246 RTVFSSYMLINKINTERNAL *pThis = hVfsSym; 2247 AssertPtrReturn(pThis, UINT32_MAX); 2248 AssertReturn(pThis->uMagic == RTVFSSYMLINK_MAGIC, UINT32_MAX); 2249 return rtVfsObjRetainDebug(&pThis->Base, "RTVfsSymlinkRetainDebug", RT_SRC_POS_ARGS); 2250 } 2251 2252 2151 2253 RTDECL(uint32_t) RTVfsSymlinkRelease(RTVFSSYMLINK hVfsSym) 2152 2254 { … … 2296 2398 2297 2399 2400 #ifdef DEBUG 2401 # undef RTVfsIoStrmRetain 2402 #endif 2298 2403 RTDECL(uint32_t) RTVfsIoStrmRetain(RTVFSIOSTREAM hVfsIos) 2299 2404 { … … 2302 2407 AssertReturn(pThis->uMagic == RTVFSIOSTREAM_MAGIC, UINT32_MAX); 2303 2408 return rtVfsObjRetain(&pThis->Base); 2409 } 2410 #ifdef DEBUG 2411 # define RTVfsIoStrmRetain(hVfsIos) RTVfsIoStrmRetainDebug(hVfsIos, RT_SRC_POS) 2412 #endif 2413 2414 2415 RTDECL(uint32_t) RTVfsIoStrmRetainDebug(RTVFSIOSTREAM hVfsIos, RT_SRC_POS_DECL) 2416 { 2417 RTVFSIOSTREAMINTERNAL *pThis = hVfsIos; 2418 AssertPtrReturn(pThis, UINT32_MAX); 2419 AssertReturn(pThis->uMagic == RTVFSIOSTREAM_MAGIC, UINT32_MAX); 2420 return rtVfsObjRetainDebug(&pThis->Base, "RTVfsIoStrmRetainDebug", RT_SRC_POS_ARGS); 2304 2421 } 2305 2422 … … 2786 2903 2787 2904 2905 #ifdef DEBUG 2906 # undef RTVfsFileRetain 2907 #endif 2788 2908 RTDECL(uint32_t) RTVfsFileRetain(RTVFSFILE hVfsFile) 2789 2909 { … … 2792 2912 AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, UINT32_MAX); 2793 2913 return rtVfsObjRetain(&pThis->Stream.Base); 2914 } 2915 #ifdef DEBUG 2916 # define RTVfsFileRetain(hVfsFile) RTVfsFileRetainDebug(hVfsFile, RT_SRC_POS) 2917 #endif 2918 2919 2920 RTDECL(uint32_t) RTVfsFileRetainDebug(RTVFSFILE hVfsFile, RT_SRC_POS_DECL) 2921 { 2922 RTVFSFILEINTERNAL *pThis = hVfsFile; 2923 AssertPtrReturn(pThis, UINT32_MAX); 2924 AssertReturn(pThis->uMagic == RTVFSFILE_MAGIC, UINT32_MAX); 2925 return rtVfsObjRetainDebug(&pThis->Stream.Base, "RTVFsFileRetainDebug", RT_SRC_POS_ARGS); 2794 2926 } 2795 2927
Note:
See TracChangeset
for help on using the changeset viewer.