VirtualBox

Changeset 3145

Show
Ignore:
Timestamp:
06/18/07 17:31:09 (2 years ago)
Author:
vboxsync
Message:

Fixed incorrect IOM return checks.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/include/VBox/iom.h

    r2981 r3145  
    4040 */ 
    4141#define IOM_NO_PDMINS_CHECKS 
     42 
     43/** 
     44 * Macro for checking if an I/O or MMIO emulation call succeeded. 
     45 *  
     46 * This macro shall only be used with the IOM APIs where it's mentioned  
     47 * in the return value description. And there is must be used to correctly 
     48 * determin if the call succeeded and things like the EIP needs updating. 
     49 *  
     50 *  
     51 * @returns Success indicator (true/false). 
     52 *  
     53 * @param   rc          The status code. This may be evaluated 
     54 *                      more than once! 
     55 *  
     56 * @remark  To avoid making assumptions about the layout of the 
     57 *          VINF_EM_FIRST...VINF_EM_LAST range we're checking 
     58 *          explicitly for each for exach the exceptions. 
     59 *          However, for efficieny we ASSUME that the 
     60 *          VINF_EM_LAST is smaller than most of the relevant 
     61 *          status codes. We also ASSUME that the 
     62 *          VINF_EM_RESCHEDULE_REM status code is the most 
     63 *          frequent status code we'll enounter in this range. 
     64 *  
     65 * @todo    Will have to add VINF_EM_DBG_HYPER_BREAKPOINT if the 
     66 *          I/O port and MMIO breakpoints should trigger before 
     67 *          the I/O is done. Currently, we don't implement these 
     68 *          kind of breakpoints. 
     69 */ 
     70#define IOM_SUCCESS(rc)     (   (rc) == VINF_SUCCESS \ 
     71                             || (   (rc) <= VINF_EM_LAST \ 
     72                                 && (rc) != VINF_EM_RESCHEDULE_REM \ 
     73                                 && (rc) >= VINF_EM_FIRST \ 
     74                                 && (rc) != VINF_EM_RESCHEDULE_RAW \ 
     75                                 && (rc) != VINF_EM_RESCHEDULE_HWACC \ 
     76                                ) \ 
     77                            ) 
    4278 
    4379 
     
    263299 * 
    264300 * @returns Strict VBox status code. Informational status codes other than the one documented  
    265  *          here are to be treated as internal failure. 
    266  * @retval  VINF_SUCCESS                Success. 
    267  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     301 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     302 * @retval  VINF_SUCCESS                Success. 
     303 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     304 *                                      status code must be passed on to EM. 
    268305 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    269306 * 
     
    279316 * 
    280317 * @returns Strict VBox status code. Informational status codes other than the one documented  
    281  *          here are to be treated as internal failure. 
    282  * @retval  VINF_SUCCESS                Success. 
    283  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     318 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     319 * @retval  VINF_SUCCESS                Success. 
     320 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     321 *                                      status code must be passed on to EM. 
    284322 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    285323 * 
     
    295333 * 
    296334 * @returns Strict VBox status code. Informational status codes other than the one documented  
    297  *          here are to be treated as internal failure. 
    298  * @retval  VINF_SUCCESS                Success. 
    299  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     335 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     336 * @retval  VINF_SUCCESS                Success. 
     337 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     338 *                                      status code must be passed on to EM. 
    300339 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    301340 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    313352 * 
    314353 * @returns Strict VBox status code. Informational status codes other than the one documented  
    315  *          here are to be treated as internal failure. 
    316  * @retval  VINF_SUCCESS                Success. 
    317  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     354 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     355 * @retval  VINF_SUCCESS                Success. 
     356 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     357 *                                      status code must be passed on to EM. 
    318358 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    319359 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    332372 * 
    333373 * @returns Strict VBox status code. Informational status codes other than the one documented  
    334  *          here are to be treated as internal failure. 
    335  * @retval  VINF_SUCCESS                Success. 
    336  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     374 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     375 * @retval  VINF_SUCCESS                Success. 
     376 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     377 *                                      status code must be passed on to EM. 
    337378 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    338379 * 
     
    367408 * 
    368409 * @returns Strict VBox status code. Informational status codes other than the one documented  
     410 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     411 * @retval  VINF_SUCCESS                Success. 
     412 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     413 *                                      status code must be passed on to EM. 
     414 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
     415 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     416 * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr) 
     417 * @retval  VINF_EM_RESCHEDULE_REM      The exception was dispatched and cannot be executed in raw-mode. (TRPMRaiseXcptErr) 
     418 * 
     419 * @param   pVM         The virtual machine (GC pointer ofcourse). 
     420 * @param   pRegFrame   Pointer to CPUMCTXCORE guest registers structure. 
     421 * @param   pCpu        Disassembler CPU state. 
     422 */ 
     423IOMDECL(int) IOMInterpretINS(PVM pVM, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pCpu); 
     424 
     425/** 
     426 * [REP*] INSB/INSW/INSD 
     427 * ES:EDI,DX[,ECX] 
     428 * 
     429 * @remark Assumes caller checked the access privileges (IOMInterpretCheckPortIOAccess) 
     430 * 
     431 * @returns Strict VBox status code. Informational status codes other than the one documented  
    369432 *          here are to be treated as internal failure. 
    370433 * @retval  VINF_SUCCESS                Success. 
     
    375438 * @retval  VINF_EM_RESCHEDULE_REM      The exception was dispatched and cannot be executed in raw-mode. (TRPMRaiseXcptErr) 
    376439 * 
    377  * @param   pVM         The virtual machine (GC pointer ofcourse). 
    378  * @param   pRegFrame   Pointer to CPUMCTXCORE guest registers structure. 
    379  * @param   pCpu        Disassembler CPU state. 
    380  */ 
    381 IOMDECL(int) IOMInterpretINS(PVM pVM, PCPUMCTXCORE pRegFrame, PDISCPUSTATE pCpu); 
    382  
    383 /** 
    384  * [REP*] INSB/INSW/INSD 
    385  * ES:EDI,DX[,ECX] 
    386  * 
    387  * @remark Assumes caller checked the access privileges (IOMInterpretCheckPortIOAccess) 
    388  * 
    389  * @returns Strict VBox status code. Informational status codes other than the one documented  
    390  *          here are to be treated as internal failure. 
    391  * @retval  VINF_SUCCESS                Success. 
    392  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
    393  * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    394  * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
    395  * @retval  VINF_TRPM_XCPT_DISPATCHED   The exception was raised and dispatched for raw-mode execution. (TRPMRaiseXcptErr) 
    396  * @retval  VINF_EM_RESCHEDULE_REM      The exception was dispatched and cannot be executed in raw-mode. (TRPMRaiseXcptErr) 
    397  * 
    398440 * @param   pVM             The virtual machine (GC pointer ofcourse). 
    399441 * @param   pRegFrame       Pointer to CPUMCTXCORE guest registers structure. 
     
    409451 * 
    410452 * @returns Strict VBox status code. Informational status codes other than the one documented  
    411  *          here are to be treated as internal failure. 
    412  * @retval  VINF_SUCCESS                Success. 
    413  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     453 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     454 * @retval  VINF_SUCCESS                Success. 
     455 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     456 *                                      status code must be passed on to EM. 
    414457 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    415458 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    430473 * 
    431474 * @returns Strict VBox status code. Informational status codes other than the one documented  
    432  *          here are to be treated as internal failure. 
    433  * @retval  VINF_SUCCESS                Success. 
    434  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     475 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     476 * @retval  VINF_SUCCESS                Success. 
     477 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     478 *                                      status code must be passed on to EM. 
    435479 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    436480 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    510554 * 
    511555 * @returns Strict VBox status code. Informational status codes other than the one documented  
    512  *          here are to be treated as internal failure. 
    513  * @retval  VINF_SUCCESS                Success. 
    514  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     556 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
     557 * @retval  VINF_SUCCESS                Success. 
     558 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     559 *                                      status code must be passed on to EM. 
    515560 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    516561 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
  • trunk/src/VBox/VMM/EM.cpp

    r2981 r3145  
    13211321         * (The unhandled cases end up with rc == VINF_EM_RESCHEDULE_REM.) 
    13221322         */ 
    1323         if (rc == VINF_EM_RESCHEDULE_REM) 
    1324         { 
    1325             /* emulate this instruction only */ 
    1326             goto emulate_instr; 
    1327         } 
    1328  
    1329         if (    rc == VINF_SUCCESS 
    1330             ||  (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 
     1323        if (IOM_SUCCESS(rc)) 
    13311324        { 
    13321325            pCtx->eip += Cpu.opsize; 
     
    13421335        } 
    13431336        AssertMsg(rc != VINF_TRPM_XCPT_DISPATCHED, ("Handle VINF_TRPM_XCPT_DISPATCHED\n")); 
     1337 
    13441338        if (VBOX_FAILURE(rc)) 
    13451339        { 
     
    13491343        AssertMsg(rc == VINF_EM_RESCHEDULE_REM, ("rc=%Vrc\n", rc)); 
    13501344    } 
    1351 emulate_instr: 
    13521345    STAM_PROFILE_STOP(&pVM->em.s.StatIOEmu, a); 
    13531346    return emR3RawExecuteInstruction(pVM, "IO: "); 
  • trunk/src/VBox/VMM/VMMAll/EMAll.cpp

    r2981 r3145  
    273273#ifdef IN_GC 
    274274    int rc = IOMGCIOPortHandler(pVM, pCtxCore, pCpu); 
    275     if (    rc == VINF_SUCCESS 
    276         ||  (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 
     275    if (IOM_SUCCESS(rc)) 
    277276        pCtxCore->eip += cbOp; 
    278277    return rc; 
  • trunk/src/VBox/VMM/VMMAll/IOMAll.cpp

    r2981 r3145  
    720720 * 
    721721 * @returns Strict VBox status code. Informational status codes other than the one documented  
    722  *          here are to be treated as internal failure. 
     722 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    723723 * @retval  VINF_SUCCESS                Success. 
    724  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     724 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     725 *                                      status code must be passed on to EM. 
    725726 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    726727 * 
     
    862863 * 
    863864 * @returns Strict VBox status code. Informational status codes other than the one documented  
    864  *          here are to be treated as internal failure. 
     865 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    865866 * @retval  VINF_SUCCESS                Success. 
    866  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     867 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     868 *                                      status code must be passed on to EM. 
    867869 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    868870 * 
     
    987989 * 
    988990 * @returns Strict VBox status code. Informational status codes other than the one documented  
    989  *          here are to be treated as internal failure. 
     991 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    990992 * @retval  VINF_SUCCESS                Success. 
    991  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     993 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     994 *                                      status code must be passed on to EM. 
    992995 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    993996 * 
     
    11071110 * 
    11081111 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1109  *          here are to be treated as internal failure. 
     1112 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    11101113 * @retval  VINF_SUCCESS                Success. 
    1111  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1114 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1115 *                                      status code must be passed on to EM. 
    11121116 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    11131117 * 
     
    13271331 * 
    13281332 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1329  *          here are to be treated as internal failure. 
     1333 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    13301334 * @retval  VINF_SUCCESS                Success. 
    1331  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1335 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1336 *                                      status code must be passed on to EM. 
    13321337 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    13331338 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    13641369        uint32_t    u32Data = ~0U; 
    13651370        rc = IOMIOPortRead(pVM, uPort, &u32Data, cbSize); 
    1366         if (    rc == VINF_SUCCESS 
    1367             ||  (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 
     1371        if (IOM_SUCCESS(rc)) 
    13681372        { 
    13691373            /* 
     
    13861390 * 
    13871391 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1388  *          here are to be treated as internal failure. 
     1392 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    13891393 * @retval  VINF_SUCCESS                Success. 
    1390  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1394 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1395 *                                      status code must be passed on to EM. 
    13911396 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    13921397 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
  • trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp

    r2981 r3145  
    15921592 * 
    15931593 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1594  *          here are to be treated as internal failure. 
     1594 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    15951595 * @retval  VINF_SUCCESS                Success. 
    1596  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1596 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1597 *                                      status code must be passed on to EM. 
    15971598 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    15981599 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    16771678        uint32_t u32Value; 
    16781679        rc = IOMIOPortRead(pVM, uPort, &u32Value, cbTransfer); 
    1679         if (rc == VINF_IOM_HC_IOPORT_READ || VBOX_FAILURE(rc)) 
     1680        if (!IOM_SUCCESS(rc)) 
    16801681            break; 
    16811682        int rc2 = iomRamWrite(pVM, GCPtrDst, &u32Value, cbTransfer); 
     
    17031704 * 
    17041705 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1705  *          here are to be treated as internal failure. 
     1706 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    17061707 * @retval  VINF_SUCCESS                Success. 
    1707  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1708 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1709 *                                      status code must be passed on to EM. 
    17081710 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    17091711 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    17461748 * 
    17471749 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1748  *          here are to be treated as internal failure. 
     1750 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    17491751 * @retval  VINF_SUCCESS                Success. 
    1750  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1752 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1753 *                                      status code must be passed on to EM. 
    17511754 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    17521755 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
     
    18341837            break; 
    18351838        rc = IOMIOPortWrite(pVM, uPort, u32Value, cbTransfer); 
    1836         if (rc == VINF_IOM_HC_IOPORT_WRITE || VBOX_FAILURE(rc)) 
     1839        if (!IOM_SUCCESS(rc)) 
    18371840            break; 
    18381841        GCPtrSrc = (RTGCPTR)((RTUINTPTR)GCPtrSrc + cbTransfer); 
     
    18591862 * 
    18601863 * @returns Strict VBox status code. Informational status codes other than the one documented  
    1861  *          here are to be treated as internal failure. 
     1864 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    18621865 * @retval  VINF_SUCCESS                Success. 
    1863  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     1866 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     1867 *                                      status code must be passed on to EM. 
    18641868 * @retval  VINF_IOM_HC_IOPORT_WRITE    Defer the write to ring-3. (R0/GC only) 
    18651869 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 
  • trunk/src/VBox/VMM/VMMGC/IOMGC.cpp

    r2981 r3145  
    5454 * 
    5555 * @returns Strict VBox status code. Informational status codes other than the one documented  
    56  *          here are to be treated as internal failure. 
     56 *          here are to be treated as internal failure. Use IOM_SUCCESS() to check for success. 
    5757 * @retval  VINF_SUCCESS                Success. 
    58  * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success but schedulinging information needs to be passed onto EM. 
     58 * @retval  VINF_EM_FIRST-VINF_EM_LAST  Success with some exceptions (see IOM_SUCCESS()), the  
     59 *                                      status code must be passed on to EM. 
    5960 * @retval  VINF_IOM_HC_IOPORT_READ     Defer the read to ring-3. (R0/GC only) 
    6061 * @retval  VINF_EM_RAW_GUEST_TRAP      The exception was left pending. (TRPMRaiseXcptErr) 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy