Changeset 108724 in vbox for trunk/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp
- Timestamp:
- Mar 24, 2025 6:53:21 PM (4 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168147
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp
r106061 r108724 64 64 #include <VBox/types.h> 65 65 #include <iprt/string.h> 66 #include <iprt/system.h>67 66 #include <VBox/err.h> 68 67 #include <VBox/param.h> … … 100 99 * Check if madvise works. 101 100 */ 102 void *pv = mmap(NULL, PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); 101 uint32_t const cbPage = SUP_PAGE_SIZE; 102 void *pv = mmap(NULL, cbPage, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); 103 103 if (pv == MAP_FAILED) 104 104 return VERR_NO_MEMORY; 105 pThis->fSysMadviseWorks = (0 == madvise(pv, PAGE_SIZE, MADV_DONTFORK));106 munmap(pv, PAGE_SIZE);105 pThis->fSysMadviseWorks = (0 == madvise(pv, cbPage, MADV_DONTFORK)); 106 munmap(pv, cbPage); 107 107 108 108 /* … … 256 256 #endif 257 257 258 size_t cbMmap = cPages << PAGE_SHIFT; 258 uint32_t const cbPage = SUP_PAGE_SIZE; 259 uint32_t const cPageShift = SUP_PAGE_SHIFT; 260 261 size_t cbMmap = cPages << cPageShift; 259 262 if ( !pThis->fSysMadviseWorks 260 263 && (fFlags & (SUP_PAGE_ALLOC_F_FOR_LOCKING | SUP_PAGE_ALLOC_F_LARGE_PAGES)) == SUP_PAGE_ALLOC_F_FOR_LOCKING) 261 cbMmap += PAGE_SIZE* 2;264 cbMmap += cbPage * 2; 262 265 263 266 uint8_t *pbPages = (uint8_t *)mmap(NULL, cbMmap, PROT_READ | PROT_WRITE, fMmap, -1, 0); … … 268 271 fMmap &= ~MAP_HUGETLB; 269 272 if (!pThis->fSysMadviseWorks && (fFlags & SUP_PAGE_ALLOC_F_FOR_LOCKING)) 270 cbMmap = (cPages + 2) << PAGE_SHIFT;273 cbMmap = (cPages + 2) << cPageShift; 271 274 pbPages = (uint8_t *)mmap(NULL, cbMmap, PROT_READ | PROT_WRITE, fMmap, -1, 0); 272 275 } … … 313 316 * area struct of the very same size as the mmap area. 314 317 */ 315 mprotect(pbPages, PAGE_SIZE, PROT_NONE);316 mprotect(pbPages + cbMmap - PAGE_SIZE, PAGE_SIZE, PROT_NONE);317 pbPages += PAGE_SHIFT;318 mprotect(pbPages, cbPage, PROT_NONE); 319 mprotect(pbPages + cbMmap - cbPage, cbPage, PROT_NONE); 320 pbPages += cPageShift; 318 321 } 319 322 … … 322 325 * so I qualified it with SUP_PAGE_ALLOC_F_FOR_LOCKING (unused) for now... */ 323 326 if (fFlags & SUP_PAGE_ALLOC_F_FOR_LOCKING) 324 memset(pbPages, 0, cPages << PAGE_SHIFT);327 memset(pbPages, 0, cPages << cPageShift); 325 328 326 329 *ppvPages = pbPages; … … 334 337 { 335 338 NOREF(pThis); 336 munmap(pvPages, cPages << PAGE_SHIFT);339 munmap(pvPages, cPages << SUP_PAGE_SHIFT); 337 340 return VINF_SUCCESS; 338 341 }
Note:
See TracChangeset
for help on using the changeset viewer.