VirtualBox

Changeset 19868 in vbox


Ignore:
Timestamp:
May 20, 2009 1:52:15 PM (16 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
47545
Message:

SUPDrvIOC.h: sketched out the semaphore interface between ring-3 and ring-0.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h

    r19730 r19868  
    232232 * @{
    233233 */
    234 #define SUP_IOCTL_QUERY_FUNCS(cFuncs)                   SUP_CTL_CODE_BIG(2) 
     234#define SUP_IOCTL_QUERY_FUNCS(cFuncs)                   SUP_CTL_CODE_BIG(2)
    235235#define SUP_IOCTL_QUERY_FUNCS_SIZE(cFuncs)              RT_UOFFSETOF(SUPQUERYFUNCS, u.Out.aFunctions[(cFuncs)])
    236236#define SUP_IOCTL_QUERY_FUNCS_SIZE_IN                   sizeof(SUPREQHDR)
     
    10281028
    10291029
     1030/** @name Semaphore Types
     1031 * @{ */
     1032#define SUP_SEM_TYPE_EVENT                  0
     1033#define SUP_SEM_TYPE_EVENT_MULTI            1
     1034/** @} */
     1035
     1036
     1037/** @name SUP_IOCTL_SEM_CREATE
     1038 * Create a semaphore
     1039 * @{
     1040 */
     1041#define SUP_IOCTL_SEM_CREATE                            SUP_CTL_CODE_SIZE(26, SUP_IOCTL_SEM_CREATE_SIZE)
     1042#define SUP_IOCTL_SEM_CREATE_SIZE                       sizeof(SUPSEMCREATE)
     1043#define SUP_IOCTL_SEM_CREATE_SIZE_IN                    sizeof(SUPSEMCREATE)
     1044#define SUP_IOCTL_SEM_CREATE_SIZE_OUT                   sizeof(SUPSEMCREATE)
     1045typedef struct SUPSEMCREATE
     1046{
     1047    /** The header. */
     1048    SUPREQHDR               Hdr;
     1049    union
     1050    {
     1051        struct
     1052        {
     1053            /** The semaphore type. */
     1054            uint32_t        uType;
     1055        } In;
     1056        struct
     1057        {
     1058            /** The handle of the created semaphore. */
     1059            uint32_t        hSem;
     1060        } Out;
     1061    } u;
     1062} SUPSEMCREATE, *PSUPSEMCREATE;
     1063
     1064/** @} */
     1065
     1066
     1067/** @name SUP_IOCTL_SEM_OP
     1068 * Semaphore operations.
     1069 * @{
     1070 */
     1071#define SUP_IOCTL_SEM_OP                                SUP_CTL_CODE_SIZE(27, SUP_IOCTL_SEM_OP_SIZE)
     1072#define SUP_IOCTL_SEM_OP_SIZE                           sizeof(SUPSEMOP)
     1073#define SUP_IOCTL_SEM_OP_SIZE_IN                        sizeof(SUPSEMOP)
     1074#define SUP_IOCTL_SEM_OP_SIZE_OUT                       sizeof(SUPREQHDR)
     1075typedef struct SUPSEMOP
     1076{
     1077    /** The header. */
     1078    SUPREQHDR               Hdr;
     1079    union
     1080    {
     1081        struct
     1082        {
     1083            /** The operation. */
     1084            uint32_t        uOp;
     1085            /** The semaphore type. */
     1086            uint32_t        uType;
     1087            /** The semaphore handle. */
     1088            uint32_t        hSem;
     1089            /** The number of milliseconds to wait if it's a wait operation. */
     1090            uint32_t        cMillies;
     1091        } In;
     1092    } u;
     1093} SUPSEMOP, *PSUPSEMOP;
     1094
     1095/** Wait for a number of millisecons. */
     1096#define SUPSEMOP_WAIT       0
     1097/** Signal the semaphore. */
     1098#define SUPSEMOP_SIGNAL     1
     1099/** Reset the sempahore (only applicable to SUP_SEM_TYPE_EVENT_MULTI). */
     1100#define SUPSEMOP_RESET      2
     1101/** Close the semaphore handle. */
     1102#define SUPSEMOP_CLOSE      3
     1103
     1104/** @} */
     1105
     1106
    10301107#pragma pack()                          /* paranoia */
    10311108
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