VirtualBox

Ignore:
Timestamp:
Jan 11, 2010 1:57:09 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
56460
Message:

iprt: Added RTSemEventMultiCreateEx and did some cleanups of the RTSemEventMultiDestroy behavior wrt NIL handles.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/solaris/semeventmulti-r0drv-solaris.c

    r25183 r25720  
    7070
    7171
    72 RTDECL(int)  RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem)
    73 {
    74     Assert(sizeof(RTSEMEVENTMULTIINTERNAL) > sizeof(void *));
    75     AssertPtrReturn(pEventMultiSem, VERR_INVALID_POINTER);
     72RTDECL(int)  RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem)
     73{
     74    return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL);
     75}
     76
     77
     78RTDECL(int)  RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass,
     79                                     const char *pszNameFmt, ...)
     80{
     81    AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER);
     82    AssertPtrReturn(phEventMultiSem, VERR_INVALID_POINTER);
    7683    RT_ASSERT_PREEMPTIBLE();
    7784
     85    AssertCompile(sizeof(RTSEMEVENTMULTIINTERNAL) > sizeof(void *));
    7886    PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)RTMemAlloc(sizeof(*pThis));
    7987    if (pThis)
     
    8593        mutex_init(&pThis->Mtx, "IPRT Multiple Release Event Semaphore", MUTEX_DRIVER, (void *)ipltospl(DISP_LEVEL));
    8694        cv_init(&pThis->Cnd, "IPRT CV", CV_DRIVER, NULL);
    87         *pEventMultiSem = pThis;
     95
     96        *phEventMultiSem = pThis;
    8897        return VINF_SUCCESS;
    8998    }
     
    92101
    93102
    94 RTDECL(int)  RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)
    95 {
    96     if (EventMultiSem == NIL_RTSEMEVENTMULTI)     /* don't bitch */
    97         return VERR_INVALID_HANDLE;
    98     PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)EventMultiSem;
     103RTDECL(int)  RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem)
     104{
     105    PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem;
     106    if (pThis == NIL_RTSEMEVENTMULTI)
     107        return VINF_SUCCESS;
    99108    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
    100     AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC,
    101                     ("pThis=%p u32Magic=%#x\n", pThis, pThis->u32Magic),
    102                     VERR_INVALID_HANDLE);
     109    AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC, ("pThis=%p u32Magic=%#x\n", pThis, pThis->u32Magic), VERR_INVALID_HANDLE);
    103110    RT_ASSERT_INTS_ON();
    104111
     
    127134
    128135
    129 RTDECL(int)  RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)
    130 {
    131     PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)EventMultiSem;
     136RTDECL(int)  RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem)
     137{
     138    PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem;
    132139    RT_ASSERT_PREEMPT_CPUID_VAR();
    133140
     
    172179
    173180
    174 RTDECL(int)  RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)
    175 {
    176     PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)EventMultiSem;
     181RTDECL(int)  RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem)
     182{
     183    PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem;
    177184    RT_ASSERT_PREEMPT_CPUID_VAR();
    178185
     
    210217
    211218
    212 static int rtSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies, bool fInterruptible)
     219static int rtSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies, bool fInterruptible)
    213220{
    214221    int rc;
    215     PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)EventMultiSem;
     222    PRTSEMEVENTMULTIINTERNAL pThis = (PRTSEMEVENTMULTIINTERNAL)hEventMultiSem;
    216223    AssertPtrReturn(pThis, VERR_INVALID_HANDLE);
    217224    AssertMsgReturn(pThis->u32Magic == RTSEMEVENTMULTI_MAGIC,
     
    294301
    295302
    296 RTDECL(int)  RTSemEventMultiWait(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)
    297 {
    298     return rtSemEventMultiWait(EventMultiSem, cMillies, false /* not interruptible */);
    299 }
    300 
    301 
    302 RTDECL(int)  RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)
    303 {
    304     return rtSemEventMultiWait(EventMultiSem, cMillies, true /* interruptible */);
    305 }
    306 
     303RTDECL(int)  RTSemEventMultiWait(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies)
     304{
     305    return rtSemEventMultiWait(hEventMultiSem, cMillies, false /* not interruptible */);
     306}
     307
     308
     309RTDECL(int)  RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies)
     310{
     311    return rtSemEventMultiWait(hEventMultiSem, cMillies, true /* interruptible */);
     312}
     313
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