VBoxGuestInternal.h revision cd9af3888294c4eaca608965b1439046ae3bc4e8
2N/A * VBoxGuest - Guest Additions Driver. 2N/A * Copyright (C) 2010 Oracle Corporation 2N/A * This file is part of VirtualBox Open Source Edition (OSE), as 2N/A * you can redistribute it and/or modify it under the terms of the GNU 2N/A * General Public License (GPL) as published by the Free Software 2N/A * Foundation, in version 2 as it comes in the "COPYING" file of the 2N/A * VirtualBox OSE distribution. VirtualBox OSE is distributed in the 2N/A * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. 2N/A/** @def VBOXGUEST_USE_WAKE_UP_LIST 2N/A * Defer wake-up of waiting thread when defined. */ 2N/A/** Pointer to the VBoxGuest per session data. */ 2N/A/** Pointer to a wait-for-event entry. */ 2N/A * VBox guest wait for event entry. 2N/A * Each waiting thread allocates one of these items and adds 2N/A * it to the wait list before going to sleep on the event sem. 2N/A /** The list node. */ 2N/A /** The events we are waiting on. */ 2N/A /** The events we received. */ 2N/A /** Set by VBoxGuestWaitDoWakeUps before leaving the spinlock to call 2N/A * RTSemEventMultiSignal. */ 2N/A /** Set by the requestor thread if it got the spinlock before the 2N/A * signaller. Deals with the race in VBoxGuestWaitDoWakeUps. */ 2N/A /** The event semaphore. */ 2N/A /** The session that's waiting. */ /** The HGCM request we're waiting for to complete. */ * VBox guest memory balloon. /** Mutex protecting the members below from concurrent access.. */ /** The current number of chunks in the balloon. */ /** The maximum number of chunks in the balloon (typically the amount of guest * memory / chunksize). */ /** This is true if we are using RTR0MemObjAllocPhysNC() / RTR0MemObjGetPagePhysAddr() * and false otherwise. */ /** The current owner of the balloon. * This is automatically assigned to the first session using the ballooning * API and first released when the session closes. */ /** The pointer to the array of memory objects holding the chunks of the * balloon. This array is cMaxChunks in size when present. */ /** Pointer to a memory balloon. */ * VBox guest device (data) extension. /** The base of the adapter I/O ports. */ /** Pointer to the mapping of the VMMDev adapter memory. */ /** Events we won't permit anyone to filter out. */ /** The memory object reserving space for the guest mappings. */ /** Spinlock protecting the signaling and resetting of the wait-for-event * semaphores as well as the event acking in the ISR. */ /** Preallocated VMMDevEvents for the IRQ handler. */ /** The physical address of pIrqAckEvents. */ /** Wait-for-event list for threads waiting for multiple events. */ /** Wait-for-event list for threads waiting on HGCM async completion. * The entire list is evaluated upon the arrival of an HGCM event, unlike * the other lists which are only evaluated till the first thread has been woken up. */ /** List of wait-for-event entries that needs waking up. */ /** List of wait-for-event entries that has been woken up. */ /** List of free wait-for-event entries. */ /** Mask of pending events. */ /** Current VMMDEV_EVENT_MOUSE_POSITION_CHANGED sequence number. * Used to implement polling. */ /** Spinlock various items in the VBOXGUESTSESSION. */ /** The current clipboard client ID, 0 if no client. * For implementing the VBOXGUEST_IOCTL_CLIPBOARD_CONNECT interface. */ /** Memory balloon information for RTR0MemObjAllocPhysNC(). */ /** For each mouse status feature the number of sessions which have * enabled it. A feature is enabled globally if at least one session has /** @todo can we programmatically determine the size of the array and * still get the following alignment right? */ /** The mouse feature status matching the counts above. These are updated * together inside the session spinlock. */ /** Align the next bit on a 64-byte boundary and make sure it starts at the same * offset in both 64-bit and 32-bit builds. * @remarks The alignments of the members that are larger than 48 bytes should be * 64-byte for cache line reasons. structs containing small amounts of * data could be lumped together at the end with a < 64 byte padding * following it (to grow into and align the struct size). /** Pointer to the VBoxGuest driver data. */ * The VBoxGuest per session data. * @remark Not quite sure whether this will be useful or not, but since * its already there let's keep it for now in case it might come /** Pointer to the next session with the same hash. */ /** The system file number of this session. */ /** The process (id) of the session. * This is NIL if it's a kernel session. */ /** Which process this session is associated with. * This is NIL if it's a kernel session. */ /** Pointer to the device extension. */ /** Array containing HGCM client IDs associated with this session. * This will be automatically disconnected when the session is closed. */ /** The last consumed VMMDEV_EVENT_MOUSE_POSITION_CHANGED sequence number. * Used to implement polling. */ /** Mouse features supported. A feature enabled in any guest session will * be enabled for the host. */ * ISR callback for notifying threads polling for mouse events. * This is called at the end of the ISR, after leaving the event spinlock, if * VMMDEV_EVENT_MOUSE_POSITION_CHANGED was raised by the host. * @param pDevExt The device extension.