VirtualBox

Changeset 19866 in vbox for trunk/include/VBox


Ignore:
Timestamp:
May 20, 2009 1:35:36 PM (16 years ago)
Author:
vboxsync
Message:

SUP: Expose ring-0 event semaphores to ring-3, part 1.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/sup.h

    r19454 r19866  
    308308
    309309
     310/** Event semaphore handle. Ring-0 / ring-3. */
     311typedef R0PTRTYPE(struct SUPSEMEVENTHANDLE *) SUPSEMEVENT;
     312/** Pointer to an event semaphore handle. */
     313typedef SUPSEMEVENT *PSUPSEMEVENT;
     314/** Nil event semaphore handle. */
     315#define NIL_SUPSEMEVENT         ((SUPSEMEVENT)0)
     316
     317/**
     318 * Creates a single release event semaphore.
     319 *
     320 * @returns VBox status code.
     321 * @param   pSession        The session handle of the caller.
     322 * @param   phEvent         Where to return the handle to the event semaphore.
     323 */
     324SUPDECL(int) SUPSemEventCreate(PSUPDRVSESSION pSession, PSUPSEMEVENT phEvent);
     325
     326/**
     327 * Closes a single release event semaphore handle.
     328 *
     329 * @returns VBox status code.
     330 * @param   pSession            The session handle of the caller.
     331 * @param   hEvent              The handle. Nil is quietly ignored.
     332 */
     333SUPDECL(int) SUPSemEventClose(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent);
     334
     335/**
     336 * Signals a single release event semaphore.
     337 *
     338 * @returns VBox status code.
     339 * @param   pSession            The session handle of the caller.
     340 * @param   hEvent              The semaphore handle.
     341 */
     342SUPDECL(int) SUPSemEventSignal(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent);
     343
     344#ifdef IN_RING0
     345/**
     346 * Waits on a single release event semaphore, not interruptible.
     347 *
     348 * @returns VBox status code.
     349 * @param   pSession            The session handle of the caller.
     350 * @param   hEvent              The semaphore handle.
     351 * @param   cMillies            The number of milliseconds to wait.
     352 * @remarks Not available in ring-3.
     353 */
     354SUPDECL(int) SUPSemEventWait(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent, uint32_t cMillies);
     355#endif
     356
     357/**
     358 * Waits on a single release event semaphore, interruptible.
     359 *
     360 * @returns VBox status code.
     361 * @param   pSession            The session handle of the caller.
     362 * @param   hEvent              The semaphore handle.
     363 * @param   cMillies            The number of milliseconds to wait.
     364 */
     365SUPDECL(int) SUPSemEventWaitNoResume(PSUPDRVSESSION pSession, SUPSEMEVENT hEvent, uint32_t cMillies);
     366
     367
     368/** Multiple release event semaphore handle. Ring-0 / ring-3. */
     369typedef R0PTRTYPE(struct SUPSEMEVENTMULTIHANDLE *)  SUPSEMEVENTMULTI;
     370/** Pointer to an multiple release event semaphore handle. */
     371typedef SUPSEMEVENTMULTI                           *PSUPSEMEVENTMULTI;
     372/** Nil multiple release event semaphore handle. */
     373#define NIL_SUPSEMEVENTMULTI                        ((SUPSEMEVENTMULTI)0)
     374
     375/**
     376 * Creates a multiple release event semaphore.
     377 *
     378 * @returns VBox status code.
     379 * @param   pSession        The session handle of the caller.
     380 * @param   phEventMulti    Where to return the handle to the event semaphore.
     381 */
     382SUPDECL(int) SUPSemEventMultiCreate(PSUPDRVSESSION pSession, PSUPSEMEVENTMULTI phEventMulti);
     383
     384/**
     385 * Closes a multiple release event semaphore handle.
     386 *
     387 * @returns VBox status code.
     388 * @param   pSession            The session handle of the caller.
     389 * @param   hEventMulti         The handle. Nil is quietly ignored.
     390 */
     391SUPDECL(int) SUPSemEventMultiClose(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti);
     392
     393/**
     394 * Signals a multiple release event semaphore.
     395 *
     396 * @returns VBox status code.
     397 * @param   pSession            The session handle of the caller.
     398 * @param   hEventMulti         The semaphore handle.
     399 */
     400SUPDECL(int) SUPSemEventMultiSignal(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti);
     401
     402/**
     403 * Resets a multiple release event semaphore.
     404 *
     405 * @returns VBox status code.
     406 * @param   pSession            The session handle of the caller.
     407 * @param   hEventMulti         The semaphore handle.
     408 */
     409SUPDECL(int) SUPSemEventMultiReset(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti);
     410
     411#ifdef IN_RING0
     412/**
     413 * Waits on a multiple release event semaphore, not interruptible.
     414 *
     415 * @returns VBox status code.
     416 * @param   pSession            The session handle of the caller.
     417 * @param   hEventMulti         The semaphore handle.
     418 * @param   cMillies            The number of milliseconds to wait.
     419 * @remarks Not available in ring-3.
     420 */
     421SUPDECL(int) SUPSemEventMultiWait(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies);
     422#endif
     423
     424/**
     425 * Waits on a multiple release event semaphore, interruptible.
     426 *
     427 * @returns VBox status code.
     428 * @param   pSession            The session handle of the caller.
     429 * @param   hEventMulti         The semaphore handle.
     430 * @param   cMillies            The number of milliseconds to wait.
     431 */
     432SUPDECL(int) SUPSemEventMultiWaitNoResume(PSUPDRVSESSION pSession, SUPSEMEVENTMULTI hEventMulti, uint32_t cMillies);
     433
    310434
    311435#ifdef IN_RING3
     
    858982    /** Internal network interface. */
    859983    SUPDRVOBJTYPE_INTERNAL_NETWORK_INTERFACE,
     984    /** Single release event semaphore. */
     985    SUPDRVOBJTYPE_SEM_EVENT,
     986    /** Multiple release event semaphore. */
     987    SUPDRVOBJTYPE_SEM_EVENT_MULTI,
    860988    /** The first invalid object type in this end. */
    861989    SUPDRVOBJTYPE_END,
Note: See TracChangeset for help on using the changeset viewer.

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