Changeset 4233 in vbox
- Timestamp:
- Aug 19, 2007 8:51:14 PM (18 years ago)
- svn:sync-xref-src-repo-rev:
- 23730
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/memobj-r0drv.cpp
r4159 r4233 95 95 static int rtR0MemObjLink(PRTR0MEMOBJINTERNAL pParent, PRTR0MEMOBJINTERNAL pChild) 96 96 { 97 uint32_t i; 98 97 99 /* sanity */ 98 100 Assert(rtR0MemObjIsMapping(pChild)); … … 100 102 101 103 /* expand the array? */ 102 const uint32_ti = pParent->uRel.Parent.cMappings;104 i = pParent->uRel.Parent.cMappings; 103 105 if (i >= pParent->uRel.Parent.cMappingsAllocated) 104 106 { … … 130 132 { 131 133 /* Validate the object handle. */ 134 PRTR0MEMOBJINTERNAL pMem; 132 135 AssertPtrReturn(MemObj, false); 133 PRTR0MEMOBJINTERNALpMem = (PRTR0MEMOBJINTERNAL)MemObj;136 pMem = (PRTR0MEMOBJINTERNAL)MemObj; 134 137 AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), false); 135 138 AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), false); … … 150 153 { 151 154 /* Validate the object handle. */ 155 PRTR0MEMOBJINTERNAL pMem; 152 156 AssertPtrReturn(MemObj, 0); 153 PRTR0MEMOBJINTERNALpMem = (PRTR0MEMOBJINTERNAL)MemObj;157 pMem = (PRTR0MEMOBJINTERNAL)MemObj; 154 158 AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), 0); 155 159 AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), 0); … … 175 179 { 176 180 /* Validate the object handle. */ 181 PRTR0MEMOBJINTERNAL pMem; 177 182 AssertPtrReturn(MemObj, NIL_RTR3PTR); 178 PRTR0MEMOBJINTERNALpMem = (PRTR0MEMOBJINTERNAL)MemObj;183 pMem = (PRTR0MEMOBJINTERNAL)MemObj; 179 184 AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NIL_RTR3PTR); 180 185 AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NIL_RTR3PTR); … … 202 207 { 203 208 /* Validate the object handle. */ 209 PRTR0MEMOBJINTERNAL pMem; 204 210 AssertPtrReturn(MemObj, 0); 205 PRTR0MEMOBJINTERNALpMem = (PRTR0MEMOBJINTERNAL)MemObj;211 pMem = (PRTR0MEMOBJINTERNAL)MemObj; 206 212 AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), 0); 207 213 AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), 0); … … 225 231 { 226 232 /* Validate the object handle. */ 233 PRTR0MEMOBJINTERNAL pMem; 234 size_t cPages; 227 235 AssertPtrReturn(MemObj, NIL_RTHCPHYS); 228 PRTR0MEMOBJINTERNALpMem = (PRTR0MEMOBJINTERNAL)MemObj;236 pMem = (PRTR0MEMOBJINTERNAL)MemObj; 229 237 AssertReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, NIL_RTHCPHYS); 230 238 AssertReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, NIL_RTHCPHYS); 231 239 AssertMsgReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, ("%p: %#x\n", pMem, pMem->u32Magic), NIL_RTHCPHYS); 232 240 AssertMsgReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, ("%p: %d\n", pMem, pMem->enmType), NIL_RTHCPHYS); 233 c onst size_t cPages = (pMem->cb >> PAGE_SHIFT);241 cPages = (pMem->cb >> PAGE_SHIFT); 234 242 if (iPage >= cPages) 235 243 { … … 268 276 * Validate the object handle. 269 277 */ 278 PRTR0MEMOBJINTERNAL pMem; 279 int rc; 280 270 281 if (MemObj == NIL_RTR0MEMOBJ) 271 282 return VINF_SUCCESS; 272 283 AssertPtrReturn(MemObj, VERR_INVALID_HANDLE); 273 PRTR0MEMOBJINTERNALpMem = (PRTR0MEMOBJINTERNAL)MemObj;284 pMem = (PRTR0MEMOBJINTERNAL)MemObj; 274 285 AssertReturn(pMem->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); 275 286 AssertReturn(pMem->enmType > RTR0MEMOBJTYPE_INVALID && pMem->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); … … 297 308 298 309 /* free the mapping. */ 299 intrc = rtR0MemObjNativeFree(pChild);310 rc = rtR0MemObjNativeFree(pChild); 300 311 if (RT_FAILURE(rc)) 301 312 { … … 310 321 * Free this object. 311 322 */ 312 intrc = rtR0MemObjNativeFree(pMem);323 rc = rtR0MemObjNativeFree(pMem); 313 324 if (RT_SUCCESS(rc)) 314 325 { … … 319 330 { 320 331 PRTR0MEMOBJINTERNAL pParent = pMem->uRel.Child.pParent; 332 uint32_t i; 321 333 322 334 /* sanity checks */ … … 329 341 330 342 /* locate and remove from the array of mappings. */ 331 uint32_ti = pParent->uRel.Parent.cMappings;343 i = pParent->uRel.Parent.cMappings; 332 344 while (i-- > 0) 333 345 { … … 373 385 { 374 386 /* sanity checks. */ 375 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);376 *pMemObj = NIL_RTR0MEMOBJ;377 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);378 387 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 388 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 389 *pMemObj = NIL_RTR0MEMOBJ; 390 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 379 391 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 380 392 … … 397 409 { 398 410 /* sanity checks. */ 399 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);400 *pMemObj = NIL_RTR0MEMOBJ;401 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);402 411 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 412 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 413 *pMemObj = NIL_RTR0MEMOBJ; 414 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 403 415 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 404 416 … … 421 433 { 422 434 /* sanity checks. */ 423 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);424 *pMemObj = NIL_RTR0MEMOBJ;425 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);426 435 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 436 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 437 *pMemObj = NIL_RTR0MEMOBJ; 438 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 427 439 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 428 440 … … 446 458 { 447 459 /* sanity checks. */ 448 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);449 *pMemObj = NIL_RTR0MEMOBJ;450 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);451 460 const size_t cbAligned = RT_ALIGN_Z(cb + (R3Ptr & PAGE_OFFSET_MASK), PAGE_SIZE); 452 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER);453 461 RTR3PTR const R3PtrAligned = (R3Ptr & ~(RTR3PTR)PAGE_OFFSET_MASK); 462 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 463 *pMemObj = NIL_RTR0MEMOBJ; 464 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 465 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 454 466 if (R0Process == NIL_RTR0PROCESS) 455 467 R0Process = RTR0ProcHandleSelf(); … … 473 485 { 474 486 /* sanity checks. */ 475 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);476 *pMemObj = NIL_RTR0MEMOBJ;477 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);478 487 const size_t cbAligned = RT_ALIGN_Z(cb + ((uintptr_t)pv & PAGE_OFFSET_MASK), PAGE_SIZE); 479 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER);480 488 void * const pvAligned = (void *)((uintptr_t)pv & ~(uintptr_t)PAGE_OFFSET_MASK); 489 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 490 *pMemObj = NIL_RTR0MEMOBJ; 491 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 492 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 481 493 AssertPtrReturn(pvAligned, VERR_INVALID_POINTER); 482 494 … … 498 510 { 499 511 /* sanity checks. */ 500 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);501 *pMemObj = NIL_RTR0MEMOBJ;502 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);503 512 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 513 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 514 *pMemObj = NIL_RTR0MEMOBJ; 515 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 504 516 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 505 517 AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); … … 522 534 { 523 535 /* sanity checks. */ 524 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);525 *pMemObj = NIL_RTR0MEMOBJ;526 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);527 536 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 537 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 538 *pMemObj = NIL_RTR0MEMOBJ; 539 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 528 540 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 529 541 AssertReturn(PhysHighest >= cb, VERR_INVALID_PARAMETER); … … 548 560 { 549 561 /* sanity checks. */ 550 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER);551 *pMemObj = NIL_RTR0MEMOBJ;552 AssertReturn(cb > 0, VERR_INVALID_PARAMETER);553 562 const size_t cbAligned = RT_ALIGN_Z(cb + (Phys & PAGE_OFFSET_MASK), PAGE_SIZE); 563 const RTHCPHYS PhysAligned = Phys & ~(RTHCPHYS)PAGE_OFFSET_MASK; 564 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 565 *pMemObj = NIL_RTR0MEMOBJ; 566 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 554 567 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 555 568 AssertReturn(Phys != NIL_RTHCPHYS, VERR_INVALID_PARAMETER); 556 const RTHCPHYS PhysAligned = Phys & ~(RTHCPHYS)PAGE_OFFSET_MASK;557 569 558 570 /* do the allocation. */ … … 574 586 { 575 587 /* sanity checks. */ 588 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 576 589 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 577 590 *pMemObj = NIL_RTR0MEMOBJ; … … 580 593 AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); 581 594 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 582 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE);583 595 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 584 596 if (pvFixed != (void *)-1) … … 604 616 { 605 617 /* sanity checks. */ 618 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE); 606 619 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 607 620 *pMemObj = NIL_RTR0MEMOBJ; … … 610 623 AssertReturn(uAlignment == PAGE_SIZE || uAlignment == _2M || uAlignment == _4M, VERR_INVALID_PARAMETER); 611 624 AssertReturn(cb > 0, VERR_INVALID_PARAMETER); 612 const size_t cbAligned = RT_ALIGN_Z(cb, PAGE_SIZE);613 625 AssertReturn(cb <= cbAligned, VERR_INVALID_PARAMETER); 614 626 if (R3PtrFixed != (RTR3PTR)-1) … … 636 648 { 637 649 /* sanity checks. */ 650 PRTR0MEMOBJINTERNAL pMemToMap; 651 PRTR0MEMOBJINTERNAL pNew; 652 int rc; 638 653 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 639 654 *pMemObj = NIL_RTR0MEMOBJ; 640 655 AssertPtrReturn(MemObjToMap, VERR_INVALID_HANDLE); 641 PRTR0MEMOBJINTERNALpMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap;656 pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap; 642 657 AssertReturn(pMemToMap->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); 643 658 AssertReturn(pMemToMap->enmType > RTR0MEMOBJTYPE_INVALID && pMemToMap->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); … … 654 669 655 670 /* do the mapping. */ 656 PRTR0MEMOBJINTERNAL pNew; 657 int rc = rtR0MemObjNativeMapKernel(&pNew, pMemToMap, pvFixed, uAlignment, fProt); 671 rc = rtR0MemObjNativeMapKernel(&pNew, pMemToMap, pvFixed, uAlignment, fProt); 658 672 if (RT_SUCCESS(rc)) 659 673 { … … 692 706 { 693 707 /* sanity checks. */ 694 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 708 PRTR0MEMOBJINTERNAL pMemToMap; 709 PRTR0MEMOBJINTERNAL pNew; 710 int rc; 711 AssertPtrReturn(pMemObj, VERR_INVALID_POINTER); 712 pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap; 695 713 *pMemObj = NIL_RTR0MEMOBJ; 696 714 AssertPtrReturn(MemObjToMap, VERR_INVALID_HANDLE); 697 PRTR0MEMOBJINTERNAL pMemToMap = (PRTR0MEMOBJINTERNAL)MemObjToMap;698 715 AssertReturn(pMemToMap->u32Magic == RTR0MEMOBJ_MAGIC, VERR_INVALID_HANDLE); 699 716 AssertReturn(pMemToMap->enmType > RTR0MEMOBJTYPE_INVALID && pMemToMap->enmType < RTR0MEMOBJTYPE_END, VERR_INVALID_HANDLE); … … 711 728 712 729 /* do the mapping. */ 713 PRTR0MEMOBJINTERNAL pNew; 714 int rc = rtR0MemObjNativeMapUser(&pNew, pMemToMap, R3PtrFixed, uAlignment, fProt, R0Process); 730 rc = rtR0MemObjNativeMapUser(&pNew, pMemToMap, R3PtrFixed, uAlignment, fProt, R0Process); 715 731 if (RT_SUCCESS(rc)) 716 732 {
Note:
See TracChangeset
for help on using the changeset viewer.