VirtualBox

Ignore:
Timestamp:
Aug 26, 2022 3:13:16 AM (3 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
153366
Message:

/Config.kmk,VMM,IPRT: Converted all run-at-compile-time tests and more to only use IPRT, so we can more easily transition to no-CRT static building on windows. bugref:10261

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/testcase/NemRawBench-1.cpp

    r96407 r96511  
    6767#endif
    6868
    69 #include <stdarg.h>
    70 #include <stdint.h>
    71 #include <stdio.h>
    72 #include <stdlib.h>
    73 #include <string.h>
     69#include <iprt/stream.h>
     70#include <iprt/stdarg.h>
     71#include <iprt/types.h>
     72#include <iprt/string.h>
    7473
    7574
     
    137136static int error(const char *pszFormat, ...)
    138137{
    139     fprintf(stderr, "error: ");
     138    RTStrmPrintf(g_pStdErr, "error: ");
    140139    va_list va;
    141140    va_start(va, pszFormat);
    142     vfprintf(stderr, pszFormat, va);
     141    RTStrmPrintfV(g_pStdErr, pszFormat, va);
    143142    va_end(va);
    144143    return 1;
     
    184183{
    185184    char szTmp[64 + 22];
    186 #ifdef _MSC_VER
    187     size_t cchTmp = _snprintf(szTmp, sizeof(szTmp) - 22, "%I64u", uNum);
    188 #else
    189     size_t cchTmp = snprintf(szTmp, sizeof(szTmp) - 22, "%llu", (unsigned long long)uNum);
    190 #endif
     185    size_t cchTmp = RTStrPrintf(szTmp, sizeof(szTmp) - 22, "%llu", (unsigned long long)uNum);
    191186    size_t cSeps  = (cchTmp - 1) / 3;
    192187    size_t const cchTotal = cchTmp + cSeps;
     
    218213    uint64_t const cInstrPerSec = nsElapsed ? (uint64_t)cInstructions * 1000000000 / nsElapsed : 0;
    219214    char szTmp1[64], szTmp2[64], szTmp3[64];
    220     printf("%s %7s instructions per second (%s exits in %s ns)\n",
    221            formatNum(cInstrPerSec, 10, szTmp1, sizeof(szTmp1)), pszInstruction,
    222            formatNum(cExits, 0, szTmp2, sizeof(szTmp2)),
    223            formatNum(nsElapsed, 0, szTmp3, sizeof(szTmp3)));
     215    RTPrintf("%s %7s instructions per second (%s exits in %s ns)\n",
     216             formatNum(cInstrPerSec, 10, szTmp1, sizeof(szTmp1)), pszInstruction,
     217             formatNum(cExits, 0, szTmp2, sizeof(szTmp2)),
     218             formatNum(nsElapsed, 0, szTmp3, sizeof(szTmp3)));
    224219    return 0;
    225220}
     
    329324static int runtimeError(const char *pszFormat, ...)
    330325{
    331     fprintf(stderr, "runtime error: ");
     326    RTStrmPrintf(g_pStdErr, "runtime error: ");
    332327    va_list va;
    333328    va_start(va, pszFormat);
    334     vfprintf(stderr, pszFormat, va);
     329    RTStrmPrintfV(g_pStdErr, pszFormat, va);
    335330    va_end(va);
    336331
     
    366361        {
    367362            if (s_aRegs[i].uType == 32)
    368                 fprintf(stderr, "%8s=%08x\n", s_aRegs[i].pszName, Value.Reg32);
     363                RTStrmPrintf(g_pStdErr, "%8s=%08x\n", s_aRegs[i].pszName, Value.Reg32);
    369364            else if (s_aRegs[i].uType == 64)
    370                 fprintf(stderr, "%8s=%08x'%08x\n", s_aRegs[i].pszName, (unsigned)(Value.Reg64 >> 32), Value.Reg32);
     365                RTStrmPrintf(g_pStdErr, "%8s=%08x'%08x\n", s_aRegs[i].pszName, (unsigned)(Value.Reg64 >> 32), Value.Reg32);
    371366            else if (s_aRegs[i].uType == 1)
    372                 fprintf(stderr, "%8s=%04x  base=%08x'%08x  limit=%08x attr=%04x\n", s_aRegs[i].pszName,
    373                         Value.Segment.Selector, (unsigned)(Value.Segment.Base >> 32), (unsigned)Value.Segment.Base,
    374                         Value.Segment.Limit, Value.Segment.Attributes);
     367                RTStrmPrintf(g_pStdErr, "%8s=%04x  base=%08x'%08x  limit=%08x attr=%04x\n", s_aRegs[i].pszName,
     368                             Value.Segment.Selector, (unsigned)(Value.Segment.Base >> 32), (unsigned)Value.Segment.Base,
     369                             Value.Segment.Limit, Value.Segment.Attributes);
    375370        }
    376371        else
    377             fprintf(stderr, "%8s=<WHvGetVirtualProcessorRegisters failed %#x>\n", s_aRegs[i].pszName, hrc);
     372            RTStrmPrintf(g_pStdErr, "%8s=<WHvGetVirtualProcessorRegisters failed %#x>\n", s_aRegs[i].pszName, hrc);
    378373    }
    379374
     
    579574static void printSReg(const char *pszName, struct kvm_segment const *pSReg)
    580575{
    581     fprintf(stderr, "     %5s=%04x  base=%016llx  limit=%08x type=%#x p=%d dpl=%d db=%d s=%d l=%d g=%d avl=%d un=%d\n",
    582             pszName, pSReg->selector, pSReg->base, pSReg->limit, pSReg->type, pSReg->present, pSReg->dpl,
    583             pSReg->db, pSReg->s, pSReg->l, pSReg->g, pSReg->avl, pSReg->unusable);
     576    RTStrmPrintf(g_pStdErr, "     %5s=%04x  base=%016llx  limit=%08x type=%#x p=%d dpl=%d db=%d s=%d l=%d g=%d avl=%d un=%d\n",
     577                 pszName, pSReg->selector, pSReg->base, pSReg->limit, pSReg->type, pSReg->present, pSReg->dpl,
     578                 pSReg->db, pSReg->s, pSReg->l, pSReg->g, pSReg->avl, pSReg->unusable);
    584579}
    585580
     
    587582static int runtimeError(const char *pszFormat, ...)
    588583{
    589     fprintf(stderr, "runtime error: ");
     584    RTStrmPrintf(g_pStdErr, "runtime error: ");
    590585    va_list va;
    591586    va_start(va, pszFormat);
    592     vfprintf(stderr, pszFormat, va);
     587    RTStrmPrintfV(g_pStdErr, pszFormat, va);
    593588    va_end(va);
    594589
    595     fprintf(stderr, "                  exit_reason=%#010x\n", g_pVCpuRun->exit_reason);
    596     fprintf(stderr, "ready_for_interrupt_injection=%#x\n", g_pVCpuRun->ready_for_interrupt_injection);
    597     fprintf(stderr, "                      if_flag=%#x\n", g_pVCpuRun->if_flag);
    598     fprintf(stderr, "                        flags=%#x\n", g_pVCpuRun->flags);
    599     fprintf(stderr, "               kvm_valid_regs=%#018llx\n", g_pVCpuRun->kvm_valid_regs);
    600     fprintf(stderr, "               kvm_dirty_regs=%#018llx\n", g_pVCpuRun->kvm_dirty_regs);
     590    RTStrmPrintf(g_pStdErr, "                  exit_reason=%#010x\n", g_pVCpuRun->exit_reason);
     591    RTStrmPrintf(g_pStdErr, "ready_for_interrupt_injection=%#x\n", g_pVCpuRun->ready_for_interrupt_injection);
     592    RTStrmPrintf(g_pStdErr, "                      if_flag=%#x\n", g_pVCpuRun->if_flag);
     593    RTStrmPrintf(g_pStdErr, "                        flags=%#x\n", g_pVCpuRun->flags);
     594    RTStrmPrintf(g_pStdErr, "               kvm_valid_regs=%#018llx\n", g_pVCpuRun->kvm_valid_regs);
     595    RTStrmPrintf(g_pStdErr, "               kvm_dirty_regs=%#018llx\n", g_pVCpuRun->kvm_dirty_regs);
    601596
    602597    struct kvm_regs Regs;
     
    607602        && ioctl(g_fdVCpu, KVM_GET_SREGS, &SRegs) != -1)
    608603    {
    609         fprintf(stderr, "       rip=%016llx\n", Regs.rip);
     604        RTStrmPrintf(g_pStdErr, "       rip=%016llx\n", Regs.rip);
    610605        printSReg("cs", &SRegs.cs);
    611         fprintf(stderr, "    rflags=%08llx\n", Regs.rflags);
    612         fprintf(stderr, "       rax=%016llx\n", Regs.rax);
    613         fprintf(stderr, "       rbx=%016llx\n", Regs.rcx);
    614         fprintf(stderr, "       rdx=%016llx\n", Regs.rdx);
    615         fprintf(stderr, "       rcx=%016llx\n", Regs.rbx);
    616         fprintf(stderr, "       rsp=%016llx\n", Regs.rsp);
    617         fprintf(stderr, "       rbp=%016llx\n", Regs.rbp);
    618         fprintf(stderr, "       rsi=%016llx\n", Regs.rsi);
    619         fprintf(stderr, "       rdi=%016llx\n", Regs.rdi);
     606        RTStrmPrintf(g_pStdErr, "    rflags=%08llx\n", Regs.rflags);
     607        RTStrmPrintf(g_pStdErr, "       rax=%016llx\n", Regs.rax);
     608        RTStrmPrintf(g_pStdErr, "       rbx=%016llx\n", Regs.rcx);
     609        RTStrmPrintf(g_pStdErr, "       rdx=%016llx\n", Regs.rdx);
     610        RTStrmPrintf(g_pStdErr, "       rcx=%016llx\n", Regs.rbx);
     611        RTStrmPrintf(g_pStdErr, "       rsp=%016llx\n", Regs.rsp);
     612        RTStrmPrintf(g_pStdErr, "       rbp=%016llx\n", Regs.rbp);
     613        RTStrmPrintf(g_pStdErr, "       rsi=%016llx\n", Regs.rsi);
     614        RTStrmPrintf(g_pStdErr, "       rdi=%016llx\n", Regs.rdi);
    620615        printSReg("ss", &SRegs.ss);
    621616        printSReg("ds", &SRegs.ds);
     
    628623        uint64_t const offMem = Regs.rip + SRegs.cs.base - MY_MEM_BASE;
    629624        if (offMem < g_cbMem - 10)
    630             fprintf(stderr, "  bytes at PC (%#zx): %02x %02x %02x %02x %02x %02x %02x %02x\n", (size_t)(offMem + MY_MEM_BASE),
    631                     g_pbMem[offMem    ], g_pbMem[offMem + 1], g_pbMem[offMem + 2], g_pbMem[offMem + 3],
    632                     g_pbMem[offMem + 4], g_pbMem[offMem + 5], g_pbMem[offMem + 6], g_pbMem[offMem + 7]);
     625            RTStrmPrintf(g_pStdErr, "  bytes at PC (%#zx): %02x %02x %02x %02x %02x %02x %02x %02x\n", (size_t)(offMem + MY_MEM_BASE),
     626                         g_pbMem[offMem    ], g_pbMem[offMem + 1], g_pbMem[offMem + 2], g_pbMem[offMem + 3],
     627                         g_pbMem[offMem + 4], g_pbMem[offMem + 5], g_pbMem[offMem + 6], g_pbMem[offMem + 7]);
    633628    }
    634629
     
    771766static int runtimeError(const char *pszFormat, ...)
    772767{
    773     fprintf(stderr, "runtime error: ");
     768    RTStrmPrintf(g_pStdErr, "runtime error: ");
    774769    va_list va;
    775770    va_start(va, pszFormat);
    776     vfprintf(stderr, pszFormat, va);
     771    RTStrmPrintfV(g_pStdErr, pszFormat, va);
    777772    va_end(va);
    778773
     
    868863        {
    869864            if (s_aFields[i].uFmt == 16)
    870                 fprintf(stderr, "%28s=%04llx\n", s_aFields[i].pszName, uValue);
     865                RTStrmPrintf(g_pStdErr, "%28s=%04llx\n", s_aFields[i].pszName, uValue);
    871866            else if (s_aFields[i].uFmt == 32)
    872                 fprintf(stderr, "%28s=%08llx\n", s_aFields[i].pszName, uValue);
     867                RTStrmPrintf(g_pStdErr, "%28s=%08llx\n", s_aFields[i].pszName, uValue);
    873868            else
    874                 fprintf(stderr, "%28s=%08x'%08x\n", s_aFields[i].pszName, (uint32_t)(uValue >> 32), (uint32_t)uValue);
     869                RTStrmPrintf(g_pStdErr, "%28s=%08x'%08x\n", s_aFields[i].pszName, (uint32_t)(uValue >> 32), (uint32_t)uValue);
    875870        }
    876871        else
    877             fprintf(stderr, "%28s=<%s failed %#x>\n", s_aFields[i].pszName,
    878                     s_aFields[i].fIsReg ? "hv_vcpu_read_register" : "hv_vmx_vcpu_read_vmcs", rcHv);
     872            RTStrmPrintf(g_pStdErr, "%28s=<%s failed %#x>\n", s_aFields[i].pszName,
     873                         s_aFields[i].fIsReg ? "hv_vcpu_read_register" : "hv_vmx_vcpu_read_vmcs", rcHv);
    879874    }
    880875    return 1;
     
    10981093void dumpCode(uint8_t const *pb, uint8_t *pbEnd)
    10991094{
    1100     printf("testing:");
     1095    RTPrintf("testing:");
    11011096    for (; pb != pbEnd; pb++)
    1102         printf(" %02x", *pb);
    1103     printf("\n");
     1097        RTPrintf(" %02x", *pb);
     1098    RTPrintf("\n");
    11041099}
    11051100
     
    12321227            || strcmp(pszArg, "/?") == 0)
    12331228        {
    1234             printf("Does some benchmarking of the native NEM engine.\n"
    1235                    "\n"
    1236                    "Usage: NemRawBench-1 --factor <factor>\n"
    1237                    "\n"
    1238                    "Options\n"
    1239                    "  --factor <factor>\n"
    1240                    "        Iteration count factor.  Default is %u.\n"
    1241                    "        Lower it if execution is slow, increase if quick.\n",
    1242                    cFactorDefault);
     1229            RTPrintf("Does some benchmarking of the native NEM engine.\n"
     1230                     "\n"
     1231                     "Usage: NemRawBench-1 --factor <factor>\n"
     1232                     "\n"
     1233                     "Options\n"
     1234                     "  --factor <factor>\n"
     1235                     "        Iteration count factor.  Default is %u.\n"
     1236                     "        Lower it if execution is slow, increase if quick.\n",
     1237                     cFactorDefault);
    12431238            return 0;
    12441239        }
     
    12471242            i++;
    12481243            if (i < argc)
    1249                 cFactor = atoi(argv[i]);
     1244                cFactor = RTStrToUInt32(argv[i]);
    12501245            else
    12511246            {
    1252                 fprintf(stderr, "syntax error: Option %s is takes a value!\n", pszArg);
     1247                RTStrmPrintf(g_pStdErr, "syntax error: Option %s is takes a value!\n", pszArg);
    12531248                return 2;
    12541249            }
     
    12561251        else
    12571252        {
    1258             fprintf(stderr, "syntax error: Unknown option: %s\n", pszArg);
     1253            RTStrmPrintf(g_pStdErr, "syntax error: Unknown option: %s\n", pszArg);
    12591254            return 2;
    12601255        }
     
    12681263    if (rcExit == 0)
    12691264    {
    1270         printf("tstNemBench-1: Successfully created test VM...\n");
     1265        RTPrintf("tstNemBench-1: Successfully created test VM...\n");
    12711266
    12721267        /*
     
    12771272        mmioTest(cFactor);
    12781273
    1279         printf("tstNemBench-1: done\n");
     1274        RTPrintf("tstNemBench-1: done\n");
    12801275    }
    12811276    return rcExit;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette