Changeset 83546 in vbox for trunk/src/VBox/Runtime/r0drv
- Timestamp:
- Apr 4, 2020 10:46:18 AM (5 years ago)
- svn:sync-xref-src-repo-rev:
- 136872
- Location:
- trunk/src/VBox/Runtime/r0drv
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/alloc-ef-r0drv.cpp
r83368 r83546 137 137 RTMEMTYPE_RTMEMREALLOC, 138 138 RTMEMTYPE_RTMEMFREE, 139 RTMEMTYPE_RTMEMFREEZ, 139 140 140 141 RTMEMTYPE_NEW, … … 645 646 * Internal free. 646 647 */ 647 static void rtR0MemFree(const char *pszOp, RTMEMTYPE enmType, void *pv, void *pvCaller, RT_SRC_POS_DECL)648 static void rtR0MemFree(const char *pszOp, RTMEMTYPE enmType, void *pv, size_t cbUser, void *pvCaller, RT_SRC_POS_DECL) 648 649 { 649 650 NOREF(enmType); RT_SRC_POS_NOREF(); … … 694 695 #endif 695 696 696 #ifdef RTR0MEM_EF_FREE_FILL697 697 /* 698 698 * Fill the user part of the block. 699 699 */ 700 memset(pv, RTR0MEM_EF_FREE_FILL, pBlock->cbUnaligned); 700 AssertMsg(enmType != RTMEMTYPE_RTMEMFREEZ || cbUser == pBlock->cbUnaligned, 701 ("cbUser=%#zx cbUnaligned=%#zx\n", cbUser, pBlock->cbUnaligned)); 702 if (enmType == RTMEMTYPE_RTMEMFREEZ) 703 RT_BZERO(pv, pBlock->cbUnaligned); 704 #ifdef RTR0MEM_EF_FREE_FILL 705 else 706 memset(pv, RTR0MEM_EF_FREE_FILL, pBlock->cbUnaligned); 701 707 #endif 702 708 … … 748 754 if (!cbNew) 749 755 { 750 rtR0MemFree(pszOp, RTMEMTYPE_RTMEMREALLOC, pvOld, pvCaller, RT_SRC_POS_ARGS);756 rtR0MemFree(pszOp, RTMEMTYPE_RTMEMREALLOC, pvOld, 0, pvCaller, RT_SRC_POS_ARGS); 751 757 return NULL; 752 758 } … … 762 768 { 763 769 memcpy(pvRet, pvOld, RT_MIN(cbNew, pBlock->cbUnaligned)); 764 rtR0MemFree(pszOp, RTMEMTYPE_RTMEMREALLOC, pvOld, pvCaller, RT_SRC_POS_ARGS);770 rtR0MemFree(pszOp, RTMEMTYPE_RTMEMREALLOC, pvOld, 0, pvCaller, RT_SRC_POS_ARGS); 765 771 } 766 772 return pvRet; … … 788 794 { 789 795 if (pv) 790 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, ASMReturnAddress(), RT_SRC_POS_ARGS); 796 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, 0, ASMReturnAddress(), RT_SRC_POS_ARGS); 797 } 798 799 800 RTDECL(void) RTMemEfTmpFreeZ(void *pv, size_t cb, RT_SRC_POS_DECL) RT_NO_THROW_DEF 801 { 802 if (pv) 803 rtR0MemFree("FreeZ", RTMEMTYPE_RTMEMFREEZ, pv, cb, ASMReturnAddress(), RT_SRC_POS_ARGS); 791 804 } 792 805 … … 843 856 { 844 857 if (pv) 845 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, ASMReturnAddress(), RT_SRC_POS_ARGS); 858 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, 0, ASMReturnAddress(), RT_SRC_POS_ARGS); 859 } 860 861 862 RTDECL(void) RTMemEfFreeZ(void *pv, size_t cb, RT_SRC_POS_DECL) RT_NO_THROW_DEF 863 { 864 if (pv) 865 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREEZ, pv, cb, ASMReturnAddress(), RT_SRC_POS_ARGS); 846 866 } 847 867 … … 893 913 { 894 914 if (pv) 895 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, ASMReturnAddress(), NULL, 0, NULL); 915 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, 0, ASMReturnAddress(), NULL, 0, NULL); 916 } 917 918 919 RTDECL(void) RTMemEfTmpFreeZNP(void *pv, size_t cb) RT_NO_THROW_DEF 920 { 921 if (pv) 922 rtR0MemFree("FreeZ", RTMEMTYPE_RTMEMFREEZ, pv, cb, ASMReturnAddress(), NULL, 0, NULL); 896 923 } 897 924 … … 949 976 { 950 977 if (pv) 951 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, ASMReturnAddress(), NULL, 0, NULL); 978 rtR0MemFree("Free", RTMEMTYPE_RTMEMFREE, pv, 0, ASMReturnAddress(), NULL, 0, NULL); 979 } 980 981 982 RTDECL(void) RTMemEfFreeZNP(void *pv, size_t cb) RT_NO_THROW_DEF 983 { 984 if (pv) 985 rtR0MemFree("FreeZ", RTMEMTYPE_RTMEMFREEZ, pv, cb, ASMReturnAddress(), NULL, 0, NULL); 952 986 } 953 987 -
trunk/src/VBox/Runtime/r0drv/alloc-r0drv.cpp
r82968 r83546 112 112 113 113 114 RTDECL(void) RTMemTmpFreeZ(void *pv, size_t cb) RT_NO_THROW_DEF 115 { 116 return RTMemFreeZ(pv, cb); 117 } 118 RT_EXPORT_SYMBOL(RTMemTmpFreeZ); 119 120 114 121 115 122 … … 274 281 } 275 282 RT_EXPORT_SYMBOL(RTMemFree); 283 284 285 RTDECL(void) RTMemFreeZ(void *pv, size_t cb) RT_NO_THROW_DEF 286 { 287 PRTMEMHDR pHdr; 288 RT_ASSERT_INTS_ON(); 289 290 if (!pv) 291 return; 292 pHdr = (PRTMEMHDR)pv - 1; 293 if (pHdr->u32Magic == RTMEMHDR_MAGIC) 294 { 295 Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_ALLOC_EX)); 296 Assert(!(pHdr->fFlags & RTMEMHDR_FLAG_EXEC)); 297 #ifdef RTR0MEM_STRICT 298 AssertReleaseMsg(!memcmp((uint8_t *)(pHdr + 1) + pHdr->cbReq, &g_abFence[0], RTR0MEM_FENCE_EXTRA), 299 ("pHdr=%p pv=%p cbReq=%u cb=%u fFlags=%#x\n" 300 "fence: %.*Rhxs\n" 301 "expected: %.*Rhxs\n", 302 pHdr, pv, pHdr->cbReq, pHdr->cb, pHdr->fFlags, 303 RTR0MEM_FENCE_EXTRA, (uint8_t *)(pHdr + 1) + pHdr->cbReq, 304 RTR0MEM_FENCE_EXTRA, &g_abFence[0])); 305 #endif 306 AssertMsgStmt(cb == pHdr->cbReq, ("cb=%#zx cbReq=%#x\n", cb, pHdr->cbReq), cb = pHdr->cbReq); 307 RT_BZERO(pv, cb); 308 rtR0MemFree(pHdr); 309 } 310 else 311 AssertMsgFailed(("pHdr->u32Magic=%RX32 pv=%p\n", pHdr->u32Magic, pv)); 312 } 313 RT_EXPORT_SYMBOL(RTMemFreeZ); 276 314 277 315
Note:
See TracChangeset
for help on using the changeset viewer.