VirtualBox

vbox的更動 25720 路徑 trunk/src/VBox/Runtime/r3/os2


忽略:
時間撮記:
2010-1-11 下午01:57:09 (15 年 以前)
作者:
vboxsync
訊息:

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

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/VBox/Runtime/r3/os2/sems-os2.cpp

    r25717 r25720  
    148148
    149149
    150 RTDECL(int)  RTSemEventMultiCreate(PRTSEMEVENTMULTI pEventMultiSem)
    151 {
     150RTDECL(int)  RTSemEventMultiCreate(PRTSEMEVENTMULTI phEventMultiSem)
     151{
     152    return RTSemEventMultiCreateEx(phEventMultiSem, 0 /*fFlags*/, NIL_RTLOCKVALCLASS, NULL);
     153}
     154
     155
     156RTDECL(int)  RTSemEventMultiCreateEx(PRTSEMEVENTMULTI phEventMultiSem, uint32_t fFlags, RTLOCKVALCLASS hClass,
     157                                     const char *pszNameFmt, ...)
     158{
     159    AssertReturn(!(fFlags & ~RTSEMEVENTMULTI_FLAGS_NO_LOCK_VAL), VERR_INVALID_PARAMETER);
     160
    152161    /*
    153162     * Create the semaphore.
     
    158167    if (!rc)
    159168    {
    160         *pEventMultiSem = (RTSEMEVENTMULTI)(void *)hev;
    161         return VINF_SUCCESS;
    162     }
    163     return RTErrConvertFromOS2(rc);
    164 }
    165 
    166 
    167 RTDECL(int)  RTSemEventMultiDestroy(RTSEMEVENTMULTI EventMultiSem)
    168 {
     169        *phEventMultiSem = (RTSEMEVENTMULTI)(void *)hev;
     170        return VINF_SUCCESS;
     171    }
     172    return RTErrConvertFromOS2(rc);
     173}
     174
     175
     176RTDECL(int)  RTSemEventMultiDestroy(RTSEMEVENTMULTI hEventMultiSem)
     177{
     178    if (hEventMultiSem == NIL_RTSEMEVENTMULTI)
     179        return VINF_SUCCESS;
     180
    169181    /*
    170182     * Close semaphore handle.
    171183     */
    172     int rc = DosCloseEventSem(SEM2HND(EventMultiSem));
    173     if (!rc)
    174         return VINF_SUCCESS;
    175     AssertMsgFailed(("Destroy EventMultiSem %p failed, rc=%d\n", EventMultiSem, rc));
    176     return RTErrConvertFromOS2(rc);
    177 }
    178 
    179 
    180 RTDECL(int)  RTSemEventMultiSignal(RTSEMEVENTMULTI EventMultiSem)
     184    int rc = DosCloseEventSem(SEM2HND(hEventMultiSem));
     185    if (!rc)
     186        return VINF_SUCCESS;
     187    AssertMsgFailed(("Destroy hEventMultiSem %p failed, rc=%d\n", hEventMultiSem, rc));
     188    return RTErrConvertFromOS2(rc);
     189}
     190
     191
     192RTDECL(int)  RTSemEventMultiSignal(RTSEMEVENTMULTI hEventMultiSem)
    181193{
    182194    /*
    183195     * Signal the object.
    184196     */
    185     int rc = DosPostEventSem(SEM2HND(EventMultiSem));
     197    int rc = DosPostEventSem(SEM2HND(hEventMultiSem));
    186198    switch (rc)
    187199    {
     
    196208
    197209
    198 RTDECL(int)  RTSemEventMultiReset(RTSEMEVENTMULTI EventMultiSem)
     210RTDECL(int)  RTSemEventMultiReset(RTSEMEVENTMULTI hEventMultiSem)
    199211{
    200212    /*
     
    202214     */
    203215    ULONG ulIgnore;
    204     int rc = DosResetEventSem(SEM2HND(EventMultiSem), &ulIgnore);
     216    int rc = DosResetEventSem(SEM2HND(hEventMultiSem), &ulIgnore);
    205217    switch (rc)
    206218    {
     
    214226
    215227
    216 RTDECL(int)  RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI EventMultiSem, unsigned cMillies)
     228RTDECL(int)  RTSemEventMultiWaitNoResume(RTSEMEVENTMULTI hEventMultiSem, unsigned cMillies)
    217229{
    218230    /*
    219231     * Wait for condition.
    220232     */
    221     int rc = DosWaitEventSem(SEM2HND(EventMultiSem), cMillies == RT_INDEFINITE_WAIT ? SEM_INDEFINITE_WAIT : cMillies);
     233    int rc = DosWaitEventSem(SEM2HND(hEventMultiSem), cMillies == RT_INDEFINITE_WAIT ? SEM_INDEFINITE_WAIT : cMillies);
    222234    switch (rc)
    223235    {
     
    228240        default:
    229241        {
    230             AssertMsgFailed(("Wait on EventMultiSem %p failed, rc=%d\n", EventMultiSem, rc));
     242            AssertMsgFailed(("Wait on hEventMultiSem %p failed, rc=%d\n", hEventMultiSem, rc));
    231243            return RTErrConvertFromOS2(rc);
    232244        }
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

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