- Timestamp:
- Mar 9, 2011 4:41:09 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 70453
- Location:
- trunk/src/VBox
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPDrv.c
r36223 r36232 1393 1393 } 1394 1394 1395 case SUP_CTL_CODE_NO_SIZE(SUP_IOCTL_CALL_VMMR0_BIG): 1396 { 1397 /* validate */ 1398 PSUPCALLVMMR0 pReq = (PSUPCALLVMMR0)pReqHdr; 1399 Log4(("SUP_IOCTL_CALL_VMMR0_BIG: op=%u in=%u arg=%RX64 p/t=%RTproc/%RTthrd\n", 1400 pReq->u.In.uOperation, pReq->Hdr.cbIn, pReq->u.In.u64Arg, RTProcSelf(), RTThreadNativeSelf())); 1401 1402 PSUPVMMR0REQHDR pVMMReq = (PSUPVMMR0REQHDR)&pReq->abReqPkt[0]; 1403 REQ_CHECK_EXPR_FMT(pReq->Hdr.cbIn >= SUP_IOCTL_CALL_VMMR0_BIG_SIZE(sizeof(SUPVMMR0REQHDR)), 1404 ("SUP_IOCTL_CALL_VMMR0_BIG: cbIn=%#x < %#lx\n", pReq->Hdr.cbIn, SUP_IOCTL_CALL_VMMR0_BIG_SIZE(sizeof(SUPVMMR0REQHDR)))); 1405 REQ_CHECK_EXPR(SUP_IOCTL_CALL_VMMR0_BIG, pVMMReq->u32Magic == SUPVMMR0REQHDR_MAGIC); 1406 REQ_CHECK_SIZES_EX(SUP_IOCTL_CALL_VMMR0_BIG, SUP_IOCTL_CALL_VMMR0_BIG_SIZE_IN(pVMMReq->cbReq), SUP_IOCTL_CALL_VMMR0_BIG_SIZE_OUT(pVMMReq->cbReq)); 1407 1408 /* execute */ 1409 if (RT_LIKELY(pDevExt->pfnVMMR0EntryEx)) 1410 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, pVMMReq, pReq->u.In.u64Arg, pSession); 1411 else 1412 pReq->Hdr.rc = VERR_WRONG_ORDER; 1413 1414 if ( RT_FAILURE(pReq->Hdr.rc) 1415 && pReq->Hdr.rc != VERR_INTERRUPTED 1416 && pReq->Hdr.rc != VERR_TIMEOUT) 1417 Log(("SUP_IOCTL_CALL_VMMR0_BIG: rc=%Rrc op=%u out=%u arg=%RX64 p/t=%RTproc/%RTthrd\n", 1418 pReq->Hdr.rc, pReq->u.In.uOperation, pReq->Hdr.cbOut, pReq->u.In.u64Arg, RTProcSelf(), RTThreadNativeSelf())); 1419 else 1420 Log4(("SUP_IOCTL_CALL_VMMR0_BIG: rc=%Rrc op=%u out=%u arg=%RX64 p/t=%RTproc/%RTthrd\n", 1421 pReq->Hdr.rc, pReq->u.In.uOperation, pReq->Hdr.cbOut, pReq->u.In.u64Arg, RTProcSelf(), RTThreadNativeSelf())); 1422 VBOXDRV_SUPDRV_IOCTL_RETURN(pSession, uIOCtl, pReqHdr, VINF_SUCCESS, pReq->Hdr.rc); 1423 return 0; 1424 } 1425 1395 1426 case SUP_CTL_CODE_NO_SIZE(SUP_IOCTL_GET_PAGING_MODE): 1396 1427 { -
trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
r34972 r36232 193 193 * - None. 194 194 */ 195 #define SUPDRV_IOC_VERSION 0x0016000 0195 #define SUPDRV_IOC_VERSION 0x00160001 196 196 197 197 /** SUP_IOCTL_COOKIE. */ … … 484 484 /** @name SUP_IOCTL_CALL_VMMR0 485 485 * Call the R0 VMM Entry point. 486 *487 * @todo Might have to convert this to a big request...488 486 * @{ 489 487 */ … … 513 511 uint8_t abReqPkt[1]; 514 512 } SUPCALLVMMR0, *PSUPCALLVMMR0; 513 /** @} */ 514 515 516 /** @name SUP_IOCTL_CALL_VMMR0_BIG 517 * Version of SUP_IOCTL_CALL_VMMR0 for dealing with large requests. 518 * @{ 519 */ 520 #define SUP_IOCTL_CALL_VMMR0_BIG SUP_CTL_CODE_BIG(27) 521 #define SUP_IOCTL_CALL_VMMR0_BIG_SIZE(cbReq) RT_UOFFSETOF(SUPCALLVMMR0, abReqPkt[cbReq]) 522 #define SUP_IOCTL_CALL_VMMR0_BIG_SIZE_IN(cbReq) SUP_IOCTL_CALL_VMMR0_SIZE(cbReq) 523 #define SUP_IOCTL_CALL_VMMR0_BIG_SIZE_OUT(cbReq) SUP_IOCTL_CALL_VMMR0_SIZE(cbReq) 515 524 /** @} */ 516 525 -
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r35346 r36232 267 267 strcpy(CookieReq.u.In.szMagic, SUPCOOKIE_MAGIC); 268 268 CookieReq.u.In.u32ReqVersion = SUPDRV_IOC_VERSION; 269 const uint32_t uMinVersion = /*(SUPDRV_IOC_VERSION & 0xffff0000) == 0x00160000270 ? 0x00160000271 : */SUPDRV_IOC_VERSION & 0xffff0000;269 const uint32_t uMinVersion = (SUPDRV_IOC_VERSION & 0xffff0000) == 0x00160000 270 ? 0x00160001 271 : SUPDRV_IOC_VERSION & 0xffff0000; 272 272 CookieReq.u.In.u32MinVersion = uMinVersion; 273 273 rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_COOKIE, &CookieReq, SUP_IOCTL_COOKIE_SIZE); … … 656 656 memcpy(pReqHdr, &pReq->abReqPkt[0], cbReq); 657 657 } 658 else /** @todo may have to remove the size limits one this request... */ 659 AssertMsgFailedReturn(("cbReq=%#x\n", pReqHdr->cbReq), VERR_INTERNAL_ERROR); 658 else if (pReqHdr->cbReq <= _512K) 659 { 660 AssertPtrReturn(pReqHdr, VERR_INVALID_POINTER); 661 AssertReturn(pReqHdr->u32Magic == SUPVMMR0REQHDR_MAGIC, VERR_INVALID_MAGIC); 662 const size_t cbReq = pReqHdr->cbReq; 663 664 PSUPCALLVMMR0 pReq = (PSUPCALLVMMR0)RTMemTmpAlloc(SUP_IOCTL_CALL_VMMR0_BIG_SIZE(cbReq)); 665 pReq->Hdr.u32Cookie = g_u32Cookie; 666 pReq->Hdr.u32SessionCookie = g_u32SessionCookie; 667 pReq->Hdr.cbIn = SUP_IOCTL_CALL_VMMR0_BIG_SIZE_IN(cbReq); 668 pReq->Hdr.cbOut = SUP_IOCTL_CALL_VMMR0_BIG_SIZE_OUT(cbReq); 669 pReq->Hdr.fFlags = SUPREQHDR_FLAGS_DEFAULT; 670 pReq->Hdr.rc = VERR_INTERNAL_ERROR; 671 pReq->u.In.pVMR0 = pVMR0; 672 pReq->u.In.idCpu = idCpu; 673 pReq->u.In.uOperation = uOperation; 674 pReq->u.In.u64Arg = u64Arg; 675 memcpy(&pReq->abReqPkt[0], pReqHdr, cbReq); 676 rc = suplibOsIOCtl(&g_supLibData, SUP_IOCTL_CALL_VMMR0_BIG, pReq, SUP_IOCTL_CALL_VMMR0_BIG_SIZE(cbReq)); 677 if (RT_SUCCESS(rc)) 678 rc = pReq->Hdr.rc; 679 memcpy(pReqHdr, &pReq->abReqPkt[0], cbReq); 680 RTMemTmpFree(pReq); 681 } 682 else 683 AssertMsgFailedReturn(("cbReq=%#x\n", pReqHdr->cbReq), VERR_OUT_OF_RANGE); 660 684 return rc; 661 685 } -
trunk/src/VBox/Runtime/generic/RTMpCpuIdToSetIndex-generic.cpp
r28800 r36232 32 32 #include "internal/iprt.h" 33 33 34 #include <iprt/cpuset.h> 35 34 36 35 37 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 36 38 { 37 return idCpu != NIL_RTCPUID ? (int) idCpu : -1;39 return idCpu < RTCPUSET_MAX_CPUS && idCpu != NIL_RTCPUID ? (int) idCpu : -1; 38 40 } 39 41 RT_EXPORT_SYMBOL(RTMpCpuIdToSetIndex); -
trunk/src/VBox/Runtime/r0drv/darwin/mp-r0drv-darwin.cpp
r29255 r36232 86 86 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 87 87 { 88 return idCpu < MY_DARWIN_MAX_CPUS ? (int)idCpu : -1;88 return idCpu < RTCPUSET_MAX_CPUS && idCpu < MY_DARWIN_MAX_CPUS ? (int)idCpu : -1; 89 89 } 90 90 -
trunk/src/VBox/Runtime/r0drv/freebsd/mp-r0drv-freebsd.c
r33540 r36232 46 46 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 47 47 { 48 return idCpu < = mp_maxid ? (int)idCpu : -1;48 return idCpu < RTCPUSET_MAX_CPUS && idCpu <= mp_maxid ? (int)idCpu : -1; 49 49 } 50 50 -
trunk/src/VBox/Runtime/r0drv/linux/mp-r0drv-linux.c
r28800 r36232 48 48 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 49 49 { 50 return idCpu < NR_CPUS ? (int)idCpu : -1;50 return idCpu < RTCPUSET_MAX_CPUS && idCpu < NR_CPUS ? (int)idCpu : -1; 51 51 } 52 52 RT_EXPORT_SYMBOL(RTMpCpuIdToSetIndex); -
trunk/src/VBox/Runtime/r0drv/nt/initterm-r0drv-nt.cpp
r30362 r36232 83 83 #endif 84 84 RTCpuSetEmpty(&g_rtMpNtCpuSet); 85 #ifdef RT_WITH_LOTS_OF_CPUS 86 # error "port me" 87 #endif 85 88 RTCpuSetFromU64(&g_rtMpNtCpuSet, ActiveProcessors); 86 89 -
trunk/src/VBox/Runtime/r0drv/solaris/vbi/mp-r0drv-solaris.c
r29284 r36232 57 57 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 58 58 { 59 return idCpu < vbi_cpu_maxcount() ? idCpu : -1;59 return idCpu < RTCPUSET_MAX_CPUS && idCpu < vbi_cpu_maxcount() ? idCpu : -1; 60 60 } 61 61 -
trunk/src/VBox/Runtime/r3/darwin/mp-darwin.cpp
r33540 r36232 70 70 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 71 71 { 72 return idCpu < rtMpDarwinMaxCpus() ? idCpu : -1;72 return idCpu < RTCPUSET_MAX_CPUS && idCpu < rtMpDarwinMaxCpus() ? idCpu : -1; 73 73 } 74 74 -
trunk/src/VBox/Runtime/r3/freebsd/mp-freebsd.cpp
r34170 r36232 66 66 RTDECL(int) RTMpCpuIdToSetIndex(RTCPUID idCpu) 67 67 { 68 return idCpu < rtMpFreeBsdMaxCpus() ? idCpu : -1;68 return idCpu < RTCPUSET_MAX_CPUS && idCpu < rtMpFreeBsdMaxCpus() ? idCpu : -1; 69 69 } 70 70 -
trunk/src/VBox/Runtime/r3/win/mp-win.cpp
r28800 r36232 34 34 #include <iprt/cpuset.h> 35 35 #include <iprt/assert.h> 36 37 38 AssertCompile(MAXIMUM_PROCESSORS <= RTCPUSET_MAX_CPUS); 36 39 37 40 … … 93 96 SYSTEM_INFO SysInfo; 94 97 GetSystemInfo(&SysInfo); 98 #ifdef RT_WITH_LOTS_OF_CPUS 99 # error "port me" 100 #endif 95 101 return RTCpuSetFromU64(pSet, SysInfo.dwActiveProcessorMask); 96 102 }
Note:
See TracChangeset
for help on using the changeset viewer.