err.h revision 0bbdfc9d77fad74dd9e3044da03640f2f53d1f90
/** Not code selector. */ /** Not data selector. */ /** Out of selector bounds. */ /** Invalid selector. Usually beyond table limits. */ /** Invalid requested privilegde level. */ * The order of the status codes between VINF_EM_FIRST and VINF_EM_LAST * are of vital importance. The lower the number the higher importance * as a scheduling instruction. /** First scheduling related status code. */ /** Indicating that the VM is being terminated and that the the execution /** Hypervisor code was stepped. * EM will first send this to the debugger, and if the issue isn't * resolved there it will enter guru meditation. */ /** Hit a breakpoint in the hypervisor code, * EM will first send this to the debugger, and if the issue isn't * resolved there it will enter guru meditation. */ /** Hit a possible assertion in the hypervisor code, * EM will first send this to the debugger, and if the issue isn't * resolved there it will enter guru meditation. */ /** Indicating that the VM should be suspended for debugging because * the developer wants to inspect the VM state. */ /** Indicating success single stepping and that EM should report that * event to the debugger. */ /** Indicating that a breakpoint was hit and that EM should notify the debugger * and in the event there is no debugger fail fatally. */ /** Indicating that EM should single step an instruction. * The instruction is stepped in the current execution mode (RAW/REM). */ /** Indicating that the VM is being turned off and that the EM should * exit to the VM awaiting the destruction request. */ /** Indicating that the VM has been reset and that scheduling goes * back to startup defaults. */ /** Indicating that the VM has been suspended and that the the thread * should wait for request telling it what to do next. */ /** Indicating that the VM has executed a halt instruction and that * the emulation thread should wait for an interrupt before resuming /** Indicating that the VM has been resumed and that the thread should /** Indicating that a rescheduling to recompiled execution. * Typically caused by raw-mode executing code which is difficult/slow * @note important to have a higher priority (lower number) than VINF_EM_RESCHEDULE * and VINF_EM_RESCHEDULE_RAW /** Indicating that a rescheduling to vmx-mode execution. * Typically caused by REM detecting that hardware-accelerated raw-mode execution is possible. /** Indicating that a rescheduling to raw-mode execution. * Typically caused by REM detecting that raw-mode execution is possible. * @note important to have a higher priority (lower number) than VINF_EM_RESCHEDULE * and VINF_EM_RESCHEDULE_RAW /** Indicating that a rescheduling now is required. Typically caused by * interrupts having changed the EIP. */ /** Last scheduling related status code. (inclusive) */ /** Reason for leaving GC: Guest trap which couldn't be handled in GC. * The trap is generally forwared to the REM and executed there. */ /** Reason for leaving GC: Interrupted by external interrupt. * The interrupt needed to be handled by the host OS. */ /** Reason for leaving GC: Interrupted by external interrupt while in hypervisor code. * The interrupt needed to be handled by the host OS and hypervisor execution must be * resumed. VM state is not complete at this point. */ /** Reason for leaving GC: A Ring switch was attempted. * Normal cause of action is to execute this in REM. */ /** Reason for leaving GC: A Ring switch was attempted using software interrupt. * Normal cause of action is to execute this in REM. */ /** Reason for leaving GC: A privileged instruction was attempted executed. * Normal cause of action is to execute this in REM. */ /** Reason for leaving GC: Emulate instruction. */ /** Reason for leaving GC: Unhandled TSS write. * Recompiler gets control. */ /** Reason for leaving GC: Unhandled LDT write. * Recompiler gets control. */ /** Reason for leaving GC: Unhandled IDT write. * Recompiler gets control. */ /** Reason for leaving GC: Unhandled GDT write. * Recompiler gets control. */ /** Reason for leaving GC: Unhandled Page Directory write. * Recompiler gets control. */ /** Reason for leaving GC: jump inside generated patch jump. /** Reason for leaving GC: Hlt instruction. * Recompiler gets control. */ /** Reason for leaving GC: Ring-3 operation pending. */ /** Reason for leaving GC: Timer pending. */ /** Reason for leaving GC: Interrupt pending (guest). */ /** Reason for leaving GC: Encountered a stale selector. */ /** Reason for leaving GC: The IRET resuming guest code trapped. */ /** The interpreter was unable to deal with the instruction at hand. */ /** Internal EM error caused by an unknown warning or informational status code. */ /** Pending VM request packet. */ /** @name Debugging Facility (DBGF) DBGF Status Codes /** The function called requires the caller to be attached as a /** Someone (including the caller) was already attached as /** Tried to hald a debugger which was already halted. * (This is a warning and not an error.) */ /** The DBGF has no more free breakpoint slots. */ /** The DBGF couldn't find the specified breakpoint. */ /** Attempted to enabled a breakpoint which was already enabled. */ /** Attempted to disabled a breakpoint which was already disabled. */ /** The breakpoint already exists. */ /** @name Patch Manager (PATM) Status Codes /** Non fatal Patch Manager analysis phase warning */ /** Non fatal Patch Manager recompile phase warning (mapped to VWRN_CONTINUE_ANALYSIS). */ /** Continue search (mapped to VWRN_CONTINUE_ANALYSIS). */ /** Patch installation refused (patch too complex or unsupported instructions ) */ /** Unable to find patch */ /** Patch was already disabled */ /** Patch was already enabled */ /** Patch was removed. */ /** Reason for leaving GC: \#GP with EIP pointing to patch code. */ /** First leave GC code. */ /** Reason for leaving GC: \#PF with EIP pointing to patch code. */ /** Reason for leaving GC: int3 with EIP pointing to patch code. */ /** Reason for leaving GC: \#PF for monitored patch page. */ /** Reason for leaving GC: duplicate instruction called at current eip. */ /** Execute one instruction with the recompiler */ /** Reason for leaving GC: attempt to patch MMIO write. */ /** Reason for leaving GC: attempt to patch MMIO read. */ /** Reason for leaving GC: pending irq after iret that sets IF. */ /** Last leave GC code. */ /** No conflicts to resolve */ /** Detected unsafe code for patching */ /** Terminate search branch */ /** Spinlock detection failed. */ /** Continue execution after patch trap. */ /** @name Code Scanning and Analysis Manager (CSAM) Status Codes /** Page record not found */ /** Reason for leaving GC: CSAM wants perform a task in ring-3. */ /** Attempt to create a GC mapping which conflicts with an existing mapping. */ /** The physical handler range has no corresponding RAM range. * If this is MMIO, see todo above the return. If not MMIO, then it's * someone else's fault... */ /** Attempt to register an access handler for a virtual range of which a part * was already handled. */ /** Attempt to register an access handler for a physical range of which a part * was already handled. */ /** Invalid page directory specified to PGM. */ /** Invalid GC physical address. */ /** Invalid GC physical range. Usually used when a specified range crosses * a RAM region boundrary. */ /** Specified access handler was not found. */ /** Attempt to register a RAM range of which parts are already * covered by existing RAM ranges. */ /** Failed to add new mappings because the current mappings are fixed /** Failed to fix mappings because of a conflict with the intermediate code. */ /** Failed to fix mappings because a mapping rejected the address. */ /** Failed to fix mappings because the proposed memory area was to small. */ /** Reason for leaving GC: The urge to syncing CR3. */ /** Page not marked for dirty bit tracking */ /** Page fault caused by dirty bit tracking; corrected */ /** Go ahead with the default Read/Write operation. * This is returned by a HC physical or virtual handler when it wants the PGMPhys[Read|Write] /** The paging mode of the host is not supported yet. */ /** The physical guest page is a reserved/mmio page and does not have any HC address. */ /** No page directory available for the hypervisor. */ /** The shadow page pool was flushed. * This means that a global CR3 sync was flagged. Anyone receiving this kind of status * will have to get down to a SyncCR3 ASAP. See also VINF_PGM_SYNC_CR3. */ /** The shadow page pool was cleared. * This is a error code internal to the shadow page pool, it will be * converted to a VERR_PGM_POOL_FLUSHED before leaving the pool code. */ /** The returned shadow page is cached. */ /** Returned by handler registration, modification and deregistration * when the shadow PTs could be updated because the guest page * aliased or/and mapped by multiple PTs. */ /** Reason for leaving GC: Paging mode changed. * PGMChangeMode() uses this to force a switch to HC so it can safely * deal with a mode switch. /** SyncPage modified the PDE. * This is an internal status code used to communicate back to the \#PF handler * that the PDE was (probably) marked not-present and it should restart the instruction. */ /** Physical range crosses dynamic ram chunk boundary; translation to HC ptr not safe. */ /** @name Memory Monitor (MM) Status Codes /** Attempt to register a RAM range of which parts are already * covered by existing RAM ranges. */ /** Hypervisor memory allocation failed. */ /** @name Save State Manager (SSM) Status Codes /** The specified data unit already exist. */ /** The specified data unit wasn't found. */ /** The specified data unit wasn't owned by caller. */ /** General saved state file integrity error. */ /** The saved state file magic was not recognized. */ /** The saved state file magic was not recognized. */ /** The saved state file magic was not recognized. */ /** The CRC of the saved state file did match. */ /** The current virtual machine id didn't match the virtual machine id. */ /** Invalid unit magic (internal data tag). */ /** The file contained a data unit which no-one wants. */ /** A data unit in the saved state file was defined but didn't any * routine for processing it. */ /** A restore routine attempted to load more data then the unit contained. */ /** Not in the correct state for the attempted operation. */ /** Unsupported data unit version. * A SSM user returns this if it doesn't know the u32Version. */ /** The format of a data unit has changed. * A SSM user returns this if it's not able to read the format for * other reasons than u32Version. */ /** The CPUID instruction returns different information when loading than when saved. * Normally caused by hardware changes on the host, but could also be caused by * changes in the BIOS setup. */ /** The RAM size differes between the saved state and the VM config. */ /** The state doesn't match the VM configuration in one or another way. * (There are certain PCI reconfiguration which the OS could potentially * do which can cause this problem. Check this out when it happens.) */ /** The virtual clock freqency differs too much. * The clock source for the virtual time isn't reliable or the code have changed. */ /** A timeout occured while waiting for async IDE operations to finish. */ /** One of the structure magics was wrong. */ /** The data in the saved state doesn't confirm to expectations. */ /** @name Virtual Machine (VM) Status Codes /** The specified at reset handler wasn't found. */ /** Invalid VM request type. * For the VMR3ReqAlloc() case, the caller just specified an illegal enmType. For * all the other occurences it means indicates corruption, broken logic, or stupid /** Invalid VM request state. * The state of the request packet was not the expected and accepted one(s). Either /** Invalid VM request packet. * One or more of the the VM controlled packet members didn't contain the correct * values. Some thing's broken. */ /** The status field has not been updated yet as the request is still * pending completion. Someone queried the iStatus field before the request * has been fully processed. */ /** The request has been freed, don't read the status now. * Someone is reading the iStatus field of a freed request packet. */ /** A VM api requiring EMT was called from another thread. * Use the VMR3ReqCall() apis to call it! */ /** The VM state was invalid for the requested operation. * Go check the 'VM Statechart Diagram.gif'. */ /** The support driver is not installed. * On linux, open returned ENOENT. */ /** The support driver is not accessible. * On linux, open returned EPERM. */ /** Was not able to load the support driver. * On linux, open returned ENODEV. */ /** Was not able to open the support driver. * Generic open error used when none of the other ones fit. */ /** The installed support driver doesn't match the version of the user. */ /** Saving the VM state is temporarily not allowed. Try again later. */ /** @name VBox Remote Desktop Protocol (VRDP) Status Codes /** Successful completion of operation (mapped to generic iprt status code). */ /** VRDP transport operation timed out (mapped to generic iprt status code). */ /** Unsupported ISO protocol feature */ /** VRDP protocol violation */ /** Unsupported VRDP protocol feature */ /** VRDP protocol violation, client sends less data than expected */ /** Internal error, VRDP packet is in wrong operation mode */ /** Memory allocation failed */ /** Client has been rejected */ /** VRPD receives a packet that is not supported */ /** VRDP script allowed the packet to be processed further */ /** VRDP script has completed its task */ /** VRDP thread has started OK and will run */ /** Framebuffer is resized, terminate send bitmap procedure */ /** Output can be enabled for the client. */ /** @name Configuration Manager (CFGM) Status Codes /** The integer value was too big for the requested representation. */ /** Child node was not found. */ /** Path to child node was invalid (i.e. empty). */ /** No parent node specified. */ /** No node was specified. */ /** The value is not an integer. */ /** The value is not a zero terminated character string. */ /** The value is not a byte string. */ /** The specified string / bytes buffer was to small. Specify a larger one and retry. */ /** The path of a new node contained slashs or was empty. */ /** A new node couldn't be inserted because one with the same name exists. */ /** A new leaf couldn't be inserted because one with the same name exists. */ /** @name Time Manager (TM) Status Codes /** The loaded timer state was incorrect. */ /** The timer was not in the correct state for the request operation. */ /** The timer was in a unknown state. Corruption or stupid coding error. */ /** The timer was stuck in an unstable state until we grew impatient and returned. */ /** @name Recompiled Execution Manager (REM) Status Codes /** Fatal error in virtual hardware. */ /** Fatal error in the recompiler cpu. */ /** Recompiler execution was interrupted by forced action. */ /** Reason for leaving GC: Must flush pending invlpg operations to REM. * Tell REM to flush page invalidations. Will temporary go to REM context * from REM and perform the flushes. */ /** Too many similar traps. This is a very useful debug only /** The REM is out of breakpoint slots. */ /** The REM could not find any breakpoint on the specified address. */ /** @name Trap Manager / Monitor (TRPM) Status Codes /** No active trap. Cannot query or reset a non-existing trap. */ /** Active trap. Cannot assert a new trap when when one is already active. */ /** Reason for leaving GC: Guest tried to write to our IDT - fatal. * The VM will be terminated assuming the worst, i.e. that the * guest has read the idtr register. */ /** Reason for leaving GC: Fatal trap in hypervisor. */ /** Reason for leaving GC: Double Fault. */ /** The exception was dispatched for raw-mode execution. */ /** @name Selector Manager / Monitor (SELM) Status Code /** Reason for leaving GC: Guest tried to write to our GDT - fatal. * The VM will be terminated assuming the worst, i.e. that the * guest has read the gdtr register. */ /** Reason for leaving GC: Guest tried to write to our LDT - fatal. * The VM will be terminated assuming the worst, i.e. that the * guest has read the ldtr register. */ /** Reason for leaving GC: Guest tried to write to our TSS - fatal. * The VM will be terminated assuming the worst, i.e. that the * guest has read the ltr register. */ /** Reason for leaving GC: Sync the GDT table to solve a conflict. */ /** No valid TSS present. */ /** @name I/O Manager / Monitor (IOM) Status Code /** The specified I/O port range was invalid. * It was either empty or it was out of bounds. */ /** The specified GC I/O port range didn't have a corresponding HC range. * IOMIOPortRegisterHC() must be called before IOMIOPortRegisterGC(). */ /** The specified I/O port range intruded on an existing range. There is * a I/O port conflict between two device, or a device tried to register * the same range twice. */ /** The I/O port range specified for removal wasn't found or it wasn't contiguous. */ /** The specified I/O port range was owned by some other device(s). Both registration * and deregistration, but in the first case only GC ranges. */ /** The specified MMIO range was invalid. * It was either empty or it was out of bounds. */ /** The specified GC MMIO range didn't have a corresponding HC range. * IOMMMIORegisterHC() must be called before IOMMMIORegisterGC(). */ /** The specified MMIO range was owned by some other device(s). Both registration * and deregistration, but in the first case only GC ranges. */ /** The specified MMIO range intruded on an existing range. There is * a MMIO conflict between two device, or a device tried to register * the same range twice. */ /** The MMIO range specified for removal was not found. */ /** The MMIO range specified for removal was invalid. The range didn't match * quite match a set of existing ranges. It's not possible to remove parts of * a MMIO range, only one or more full ranges. */ /** An invalid I/O port size was specified for a read or write operation. */ /** The MMIO handler was called for a bogus address! Internal error! */ /** The MMIO handler experienced a problem with the disassembler. */ /** The port being read was not present(/unused) and IOM shall return ~0 according to size. */ /** Unused MMIO register read, fill with 00. */ /** Unused MMIO register read, fill with FF. */ /** Reason for leaving GC: I/O port read. */ /** Reason for leaving GC: I/O port write. */ /** Reason for leaving GC: MMIO write. */ /** Reason for leaving GC: MMIO read. */ /** Reason for leaving GC: MMIO read/write. */ /** @name Virtual Machine Monitor (VMM) Status Codes /** Reason for leaving GC: Calling host function. */ /** @name Pluggable Device and Driver Manager (PDM) Status Codes /** An invalid LUN specification was given. */ /** A device encountered an unknown configuration value. * This means that the device is potentially misconfigured and the device * construction or unit attachment failed because of this. */ /** The above driver doesn't export a interface required by a driver being * attached to it. Typical misconfiguration problem. */ /** The below driver doesn't export a interface required by the drive * having attached it. Typical misconfiguration problem. */ /** A device didn't find a required interface with an attached driver. * Typical misconfiguration problem. */ /** A driver encountered an unknown configuration value. * This means that the driver is potentially misconfigured and the driver /** The PCI bus assigned to a device didn't have room for it. * Either too many devices are configured on the same PCI bus, or there are * some internal problem where PDM/PCI doesn't free up slots when unplugging devices. */ /** A queue is out of free items, the queueing operation failed. */ /** Not possible to attach further drivers to the driver. * A driver which doesn't support attachments (below of course) will * return this status code if it found that further drivers were configured * to be attached to it. */ /** Not possible to attach drivers to the device. * A device which doesn't support attachments (below of course) will * return this status code if it found that drivers were configured * to be attached to it. */ * The PDMDRVHLP::pfnAttach and PDMDEVHLP::pfnDriverAttach will return * this error when no driver was configured to be attached. */ /** The media geometry hasn't been set yet, so it cannot be obtained. * The caller should then calculate the geometry from the media size. */ /** The media translation hasn't been set yet, so it cannot be obtained. * The caller should then guess the translation. */ /** The media is not mounted, operation requires a mounted media. */ /** Mount failed because a media was already mounted. Unmount the media * and retry the mount. */ /** The media is locked and cannot be unmounted. */ /** No 'Type' attribute in the DrvBlock configuration. /** The 'Type' attribute in the DrvBlock configuration had an unknown value. /** The 'Translation' attribute in the DrvBlock configuration had an unknown value. /** The block driver type wasn't supported. * Misconfiguration of the kind you get when attaching a floppy to an IDE controller. */ /** A attach or prepare mount call failed because the driver already * had a driver attached. */ /** An attempt on deattaching a driver without anyone actually being attached, or * performing any other operation on an attached driver. */ /** The attached driver configuration is missing the 'Driver' attribute. */ /** The configured driver wasn't found. * Either the necessary driver modules wasn't loaded, the name was * misspelled, or it was a misconfiguration. */ /** The Ring-3 module was already loaded. */ /** The name of the module clashed with an existing module. */ /** A module name is too long. */ /** Driver name clash. Another driver with the same name as the * one begin registred exists. */ /** The version of the driver registration structure is unknown * to this VBox version. Either mixing incompatible versions or * the structure isn't correctly initialized. */ /** Invalid entry in the driver registration structure. */ /** Invalid host bit mask. */ /** Not possible to detach a driver because the above driver/device * doesn't support it. The above entity doesn't implement the pfnDetach call. */ /** No PCI Bus is available to register the device with. This is usually a * misconfiguration or in rare cases a buggy pci device. */ /** The device is not a registered PCI device and thus cannot * perform any PCI operations. The device forgot to register it self. */ /** The version of the device registration structure is unknown * to this VBox version. Either mixing incompatible versions or * the structure isn't correctly initialized. */ /** Invalid entry in the device registration structure. */ /** Invalid host bit mask. */ /** The guest bit mask didn't match the guest being loaded. */ /** Device name clash. Another device with the same name as the * one begin registred exists. */ /** The device wasn't found. There was no registered device /** The device instance was not found. */ /** The device instance have no base interface. */ /** The device instance have no such logical unit. */ /** The driver instance could not be found. */ /** Logical Unit was not found. */ /** The Logical Unit was found, but it had no driver attached to it. */ /** The Logical Unit was found, but it had no driver attached to it. */ /** No PIC device instance is registered with the current VM and thus * the PIC operation cannot be performed. */ /** No APIC device instance is registered with the current VM and thus * the APIC operation cannot be performed. */ /** No DMAC device instance is registered with the current VM and thus * the DMA operation cannot be performed. */ /** No RTC device instance is registered with the current VM and thus * the RTC or CMOS operation cannot be performed. */ /** Unable to open the host interface due to a sharing violation . */ /** Unable to open the host interface. */ /** The device doesn't support runtime driver attaching. * The PDMDEVREG::pfnAttach callback function is NULL. */ /** The device doesn't support runtime driver detaching. * The PDMDEVREG::pfnDetach callback function is NULL. */ /** Invalid host interface version. */ /** @name Host-Guest Communication Manager (HGCM) Status Codes /** Requested service does not exist. */ /** Service rejected client connection */ /** Command address is invalid. */ /** Service will execute the command in background. */ /** HGCM could not perform requested operation because of an internal error. */ /** Invalid HGCM client id. */ /** The HGCM is saving state. */ /** Requested service already exists. */ /** @name Network Address Translation Driver (DrvNAT) Status Codes /** Failed to find the DNS configured for this machine. */ /** Failed to convert the specified Guest IP to a binary IP address. /** Failed while setting up a redirector rule. * There probably is a conflict between the rule and some existing * service on the computer. */ /** @name HostIF Driver (DrvTUN) Status Codes /** The Host Interface Networking init program failed. */ /** The Host Interface Networking device name is too long. */ /** The Host Interface Networking name config IOCTL call failed. */ /** Failed to make the Host Interface Networking handle non-blocking. */ /** If a Host Interface Networking filehandle was specified it's not allowed to * have any init or term programs. */ /** @name VBox HDD Container (VDI) Status Codes /** Invalid image file header. */ /** Invalid image file header: invalid signature. */ /** Invalid image file header: invalid version. */ /** Invalid image type. */ /** Invalid image flags. */ /** Operation can't be done in current HDD container state. */ /** Differencing image can't be used with current base image. */ /** Two or more images of one HDD has different versions. */ /** Differencing and parent images can't be used together due to UUID. */ /** No differencing images to commit. */ /** Virtual HDD is not opened. */ /** Requested image is not opened. */ /** Image is read-only. */ /** Comment string is too long. */ /** Geometry hasn't been set. */ /** No data for this block in image. */ /** Configuration value not found. */ /** @name VBox Guest Library (VBGL) Status Codes /** Library was not initialized. */ /** Virtual address was not allocated by the library. */ /** IOCtl to VBoxGuest driver failed. */ /** @name VBox USB (VUSB) Status Codes /** No available ports on the hub. * This error is returned when a device is attempted created and/or attached * to a hub which is out of ports. */ /** The requested operation cannot be performed on a detached USB device. */ /** Failed to allocate memory for a URB. */ /** General failure during URB queuing. * This will go away when the queueing gets proper status code handling. */ /** Device creation failed because the USB device name was not found. */ /** Not permitted to open the USB device. * The user doesn't have access to the device in the usbfs, check the mount options. */ /** The requested operation cannot be performed because the device * is currently being reset. */ /** @name VBox VGA Status Codes /** One of the custom modes was incorrect. * The format or bit count of the custom mode value is invalid. */ /** The display connector is resizing. */ /** @name VBox VMX Status Codes /** Invalid VMCS index or write to read-only element. */ /** Invalid VMCS pointer. */ /** Invalid VMXON pointer. */ /** Generic VMX failure. */ /** Invalid CPU mode for VMX execution. */ /** Unable to start VM execution. */ /** Unable to resume VM execution. */ /** Unable to switch due to invalid host state. */ /** IA32_FEATURE_CONTROL MSR not setup correcty (turn on VMX in the host system BIOS) */ /** VMX CPU extension not available */ /** VMXON failed; possibly because it was already run before */ /** @name VBox SVM Status Codes /** Unable to start VM execution. */ /** SVM bit not set in K6_EFER MSR */ /** SVM CPU extension not available. */ /** SVM CPU extension disabled (by BIOS). */ /** @name VBox HWACCM Status Codes /** Unable to start VM execution. */ * @returns true if rc indicates success. * @returns false if rc indicates failure. * @param rc The iprt status code to test. * @returns true if rc indicates failure. * @returns false if rc indicates success. * @param rc The iprt status code to test.