Changeset 25717 in vbox for trunk/src/VBox/Runtime/r0drv/nt
- Timestamp:
- Jan 11, 2010 1:24:09 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56457
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/nt/semevent-r0drv-nt.cpp
r20929 r25717 59 59 60 60 61 RTDECL(int) RTSemEventCreate(PRTSEMEVENT p EventSem)61 RTDECL(int) RTSemEventCreate(PRTSEMEVENT phEventSem) 62 62 { 63 Assert(sizeof(RTSEMEVENTINTERNAL) > sizeof(void *)); 64 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)RTMemAlloc(sizeof(*pThis)); 65 if (pThis) 66 { 67 pThis->u32Magic = RTSEMEVENT_MAGIC; 68 KeInitializeEvent(&pThis->Event, SynchronizationEvent, FALSE); 69 *pEventSem = pThis; 70 return VINF_SUCCESS; 71 } 72 return VERR_NO_MEMORY; 63 return RTSemEventCreateEx(phEventSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL); 73 64 } 74 65 75 66 76 RTDECL(int) RTSemEventDestroy(RTSEMEVENT EventSem) 67 RTDECL(int) RTSemEventCreateEx(PRTSEMEVENT phEventSem, uint32_t fFlags, RTLOCKVALCLASS hClass, const char *pszNameFmt, ...) 68 { 69 AssertReturn(!(fFlags & ~RTSEMEVENT_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER); 70 AssertCompile(sizeof(RTSEMEVENTINTERNAL) > sizeof(void *)); 71 72 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)RTMemAlloc(sizeof(*pThis)); 73 if (!pThis) 74 return VERR_NO_MEMORY; 75 76 pThis->u32Magic = RTSEMEVENT_MAGIC; 77 KeInitializeEvent(&pThis->Event, SynchronizationEvent, FALSE); 78 79 *phEventSem = pThis; 80 return VINF_SUCCESS; 81 } 82 83 84 RTDECL(int) RTSemEventDestroy(RTSEMEVENT hEventSem) 77 85 { 78 86 /* 79 87 * Validate input. 80 88 */ 81 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)EventSem; 82 if (!pThis) 83 return VERR_INVALID_PARAMETER; 84 if (pThis->u32Magic != RTSEMEVENT_MAGIC) 85 { 86 AssertMsgFailed(("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis)); 87 return VERR_INVALID_PARAMETER; 88 } 89 PRTSEMEVENTINTERNAL pThis = hEventSem; 90 if (pThis == NIL_RTSEMEVENT) 91 return VINF_SUCCESS; 92 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 93 AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); 89 94 90 95 /* … … 98 103 99 104 100 RTDECL(int) RTSemEventSignal(RTSEMEVENT EventSem)105 RTDECL(int) RTSemEventSignal(RTSEMEVENT hEventSem) 101 106 { 102 107 /* 103 108 * Validate input. 104 109 */ 105 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)EventSem; 106 if (!pThis) 107 return VERR_INVALID_PARAMETER; 108 if ( !pThis 109 || pThis->u32Magic != RTSEMEVENT_MAGIC) 110 { 111 AssertMsgFailed(("pThis->u32Magic=%RX32 pThis=%p\n", pThis ? pThis->u32Magic : 0, pThis)); 112 return VERR_INVALID_PARAMETER; 113 } 110 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)hEventSem; 111 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 112 AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); 114 113 115 114 /* … … 121 120 122 121 123 static int rtSemEventWait(RTSEMEVENT EventSem, unsigned cMillies, bool fInterruptible)122 static int rtSemEventWait(RTSEMEVENT hEventSem, unsigned cMillies, bool fInterruptible) 124 123 { 125 124 /* 126 125 * Validate input. 127 126 */ 128 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)EventSem; 129 if (!pThis) 130 return VERR_INVALID_PARAMETER; 131 if ( !pThis 132 || pThis->u32Magic != RTSEMEVENT_MAGIC) 133 { 134 AssertMsgFailed(("pThis->u32Magic=%RX32 pThis=%p\n", pThis ? pThis->u32Magic : 0, pThis)); 135 return VERR_INVALID_PARAMETER; 136 } 127 PRTSEMEVENTINTERNAL pThis = (PRTSEMEVENTINTERNAL)hEventSem; 128 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 129 AssertMsgReturn(pThis->u32Magic == RTSEMEVENT_MAGIC, ("pThis->u32Magic=%RX32 pThis=%p\n", pThis->u32Magic, pThis), VERR_INVALID_HANDLE); 137 130 138 131 /* … … 170 163 171 164 172 RTDECL(int) RTSemEventWait(RTSEMEVENT EventSem, unsigned cMillies)165 RTDECL(int) RTSemEventWait(RTSEMEVENT hEventSem, unsigned cMillies) 173 166 { 174 return rtSemEventWait( EventSem, cMillies, false /* fInterruptible */);167 return rtSemEventWait(hEventSem, cMillies, false /* fInterruptible */); 175 168 } 176 169 177 170 178 RTDECL(int) RTSemEventWaitNoResume(RTSEMEVENT EventSem, unsigned cMillies)171 RTDECL(int) RTSemEventWaitNoResume(RTSEMEVENT hEventSem, unsigned cMillies) 179 172 { 180 return rtSemEventWait( EventSem, cMillies, true /* fInterruptible */);173 return rtSemEventWait(hEventSem, cMillies, true /* fInterruptible */); 181 174 } 182 175
Note:
See TracChangeset
for help on using the changeset viewer.