Changeset 25722 in vbox for trunk/src/VBox/Runtime/r0drv/solaris
- Timestamp:
- Jan 11, 2010 2:22:03 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56464
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/solaris/semfastmutex-r0drv-solaris.c
r22073 r25722 61 61 62 62 63 RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX p MutexSem)63 RTDECL(int) RTSemFastMutexCreate(PRTSEMFASTMUTEX phFastMtx) 64 64 { 65 65 AssertCompile(sizeof(RTSEMFASTMUTEXINTERNAL) > sizeof(void *)); 66 AssertPtrReturn(p MutexSem, VERR_INVALID_POINTER);66 AssertPtrReturn(phFastMtx, VERR_INVALID_POINTER); 67 67 RT_ASSERT_PREEMPTIBLE(); 68 68 69 PRTSEMFASTMUTEXINTERNAL p FastInt = (PRTSEMFASTMUTEXINTERNAL)RTMemAlloc(sizeof(*pFastInt));70 if (p FastInt)69 PRTSEMFASTMUTEXINTERNAL pThis = (PRTSEMFASTMUTEXINTERNAL)RTMemAlloc(sizeof(*pThis)); 70 if (pThis) 71 71 { 72 pFastInt->u32Magic = RTSEMFASTMUTEX_MAGIC; 73 rw_init (&pFastInt->Mtx, "RWLOCK", RW_DRIVER, NULL); 74 *pMutexSem = pFastInt; 72 pThis->u32Magic = RTSEMFASTMUTEX_MAGIC; 73 rw_init (&pThis->Mtx, "RWLOCK", RW_DRIVER, NULL); 74 75 *phFastMtx = pThis; 75 76 return VINF_SUCCESS; 76 77 } … … 79 80 80 81 81 RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX MutexSem)82 RTDECL(int) RTSemFastMutexDestroy(RTSEMFASTMUTEX hFastMtx) 82 83 { 83 if (MutexSem == NIL_RTSEMFASTMUTEX) 84 return VERR_INVALID_PARAMETER; 85 PRTSEMFASTMUTEXINTERNAL pFastInt = (PRTSEMFASTMUTEXINTERNAL)MutexSem; 86 AssertPtrReturn(pFastInt, VERR_INVALID_PARAMETER); 87 AssertMsgReturn(pFastInt->u32Magic == RTSEMFASTMUTEX_MAGIC, 88 ("pFastInt->u32Magic=%RX32 pFastInt=%p\n", pFastInt->u32Magic, pFastInt), 89 VERR_INVALID_PARAMETER); 84 PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; 85 if (pThis == NIL_RTSEMFASTMUTEX) 86 return VINF_SUCCESS; 87 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 88 AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE); 90 89 RT_ASSERT_INTS_ON(); 91 90 92 ASMAtomicXchgU32(&p FastInt->u32Magic, RTSEMFASTMUTEX_MAGIC_DEAD);93 rw_destroy(&p FastInt->Mtx);94 RTMemFree(p FastInt);91 ASMAtomicXchgU32(&pThis->u32Magic, RTSEMFASTMUTEX_MAGIC_DEAD); 92 rw_destroy(&pThis->Mtx); 93 RTMemFree(pThis); 95 94 96 95 return VINF_SUCCESS; … … 98 97 99 98 100 RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX MutexSem)99 RTDECL(int) RTSemFastMutexRequest(RTSEMFASTMUTEX hFastMtx) 101 100 { 102 PRTSEMFASTMUTEXINTERNAL pFastInt = (PRTSEMFASTMUTEXINTERNAL)MutexSem; 103 AssertPtrReturn(pFastInt, VERR_INVALID_PARAMETER); 104 AssertMsgReturn(pFastInt->u32Magic == RTSEMFASTMUTEX_MAGIC, 105 ("pFastInt->u32Magic=%RX32 pFastInt=%p\n", pFastInt->u32Magic, pFastInt), 106 VERR_INVALID_PARAMETER); 101 PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; 102 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 103 AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE); 107 104 RT_ASSERT_PREEMPTIBLE(); 108 105 109 rw_enter(&p FastInt->Mtx, RW_WRITER);106 rw_enter(&pThis->Mtx, RW_WRITER); 110 107 return VINF_SUCCESS; 111 108 } 112 109 113 110 114 RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX MutexSem)111 RTDECL(int) RTSemFastMutexRelease(RTSEMFASTMUTEX hFastMtx) 115 112 { 116 PRTSEMFASTMUTEXINTERNAL pFastInt = (PRTSEMFASTMUTEXINTERNAL)MutexSem; 117 AssertPtrReturn(pFastInt, VERR_INVALID_PARAMETER); 118 AssertMsgReturn(pFastInt->u32Magic == RTSEMFASTMUTEX_MAGIC, 119 ("pFastInt->u32Magic=%RX32 pFastInt=%p\n", pFastInt->u32Magic, pFastInt), 120 VERR_INVALID_PARAMETER); 113 PRTSEMFASTMUTEXINTERNAL pThis = hFastMtx; 114 AssertPtrReturn(pThis, VERR_INVALID_HANDLE); 115 AssertMsgReturn(pThis->u32Magic == RTSEMFASTMUTEX_MAGIC, ("%p: u32Magic=%RX32\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE); 121 116 RT_ASSERT_INTS_ON(); 122 117 123 rw_exit(&p FastInt->Mtx);118 rw_exit(&pThis->Mtx); 124 119 return VINF_SUCCESS; 125 120 }
Note:
See TracChangeset
for help on using the changeset viewer.