Ignore:
Timestamp:
Jun 21, 2001, 11:07:54 PM (24 years ago)
Author:
sandervl
Message:

semaphore updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmmutex.cpp

    r6049 r6060  
    1 /* $Id: hmmutex.cpp,v 1.4 2001-06-19 10:50:25 sandervl Exp $ */
     1/* $Id: hmmutex.cpp,v 1.5 2001-06-21 21:07:53 sandervl Exp $ */
    22
    33/*
     
    3131#ifdef USE_OS2SEMAPHORES
    3232#define INCL_DOSSEMAPHORES
     33#define INCL_DOSERRORS
    3334#include <os2wrap.h>
    3435#include <win32type.h>
     
    273274#endif
    274275
     276
     277#ifdef USE_OS2SEMAPHORES
     278/*****************************************************************************
     279 * Name      : DWORD HMDeviceOpen32Class::WaitForSingleObject
     280 * Purpose   : object synchronization
     281 * Parameters: PHMHANDLEDATA pHMHandleData
     282 *             DWORD dwTimeout
     283 * Variables :
     284 * Result    : API returncode
     285 * Remark    :
     286 * Status    :
     287 *
     288 * Author    : Patrick Haller [Wed, 1999/06/17 20:44]
     289 *****************************************************************************/
     290
     291DWORD HMDeviceMutexClass::WaitForSingleObject(PHMHANDLEDATA pHMHandleData,
     292                                              DWORD         dwTimeout)
     293{
     294 DWORD rc;
     295
     296  dprintf2(("KERNEL32: HMDeviceMutexClass::WaitForSingleObject(%08xh %08xh)",
     297            pHMHandleData->hHMHandle, dwTimeout));
     298
     299  if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) )
     300  {
     301      dprintf(("ERROR: Access denied!!"));
     302      SetLastError(ERROR_ACCESS_DENIED_W);
     303      return FALSE;
     304  }
     305
     306  rc = DosRequestMutexSem(pHMHandleData->hHMHandle, dwTimeout);
     307  if(rc && rc != ERROR_INTERRUPT && rc != ERROR_TIMEOUT && rc != ERROR_SEM_OWNER_DIED) {
     308      dprintf(("DosWaitEventSem %x failed with rc %d", pHMHandleData->hHMHandle, rc));
     309      SetLastError(error2WinError(rc));
     310      return WAIT_FAILED_W;
     311  }
     312  SetLastError(ERROR_SUCCESS_W);
     313  if(rc == ERROR_INTERRUPT || rc == ERROR_SEM_OWNER_DIED) {
     314      return WAIT_ABANDONED_W;
     315  }
     316  else
     317  if(rc == ERROR_TIMEOUT) {
     318      return WAIT_TIMEOUT_W;
     319  }
     320  return WAIT_OBJECT_0_W;
     321}
     322#endif
     323
     324#ifdef USE_OS2SEMAPHORES
     325/*****************************************************************************
     326 * Name      : DWORD HMDeviceOpen32Class::WaitForSingleObjectEx
     327 * Purpose   : object synchronization
     328 * Parameters: PHMHANDLEDATA pHMHandleData
     329 *             DWORD dwTimeout
     330 *             BOOL  fAlertable
     331 * Variables :
     332 * Result    : API returncode
     333 * Remark    :
     334 * Status    :
     335 *
     336 * Author    : Patrick Haller [Wed, 1999/06/17 20:44]
     337 *****************************************************************************/
     338
     339DWORD HMDeviceMutexClass::WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData,
     340                                                DWORD         dwTimeout,
     341                                                BOOL          fAlertable)
     342{
     343  dprintf2(("KERNEL32: HMDeviceMutexClass::WaitForSingleObjectEx(%08xh,%08h,%08xh) not implemented correctly.\n",
     344            pHMHandleData->hHMHandle, dwTimeout, fAlertable));
     345
     346  if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) )
     347  {
     348      dprintf(("ERROR: Access denied!!"));
     349      SetLastError(ERROR_ACCESS_DENIED_W);
     350      return WAIT_FAILED_W;
     351  }
     352
     353  return WaitForSingleObject(pHMHandleData, dwTimeout);
     354}
     355#endif
     356
     357#ifdef USE_OS2SEMAPHORES
     358/*****************************************************************************
     359 * Name      : BOOL HMDeviceMutexClass::MsgWaitForMultipleObjects
     360 * Purpose   :
     361 * Variables :
     362 * Result    :
     363 * Remark    :
     364 * Status    :
     365 *
     366 * Author    : SvL
     367 *****************************************************************************/
     368DWORD HMDeviceMutexClass::MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData,
     369                                                    DWORD      nCount,
     370                                                    PHANDLE    pHandles,
     371                                                    BOOL       fWaitAll,
     372                                                    DWORD      dwMilliseconds,
     373                                                    DWORD      dwWakeMask)
     374{
     375    dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::MsgWaitForMultipleObjects %08x %d %x %d %d %x",
     376              pHMHandleData->hHMHandle, nCount, pHandles, fWaitAll, dwMilliseconds, dwWakeMask));
     377
     378    if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) )
     379    {
     380        dprintf(("ERROR: Access denied!!"));
     381        SetLastError(ERROR_ACCESS_DENIED_W);
     382        return WAIT_FAILED_W;
     383    }
     384    return WAIT_FAILED_W;
     385}
     386#endif
     387
     388#ifdef USE_OS2SEMAPHORES
     389/*****************************************************************************
     390 * Name      : BOOL HMDeviceMutexClass::WaitForMultipleObjects
     391 * Purpose   :
     392 * Variables :
     393 * Result    :
     394 * Remark    :
     395 * Status    :
     396 *
     397 * Author    : SvL
     398 *****************************************************************************/
     399DWORD HMDeviceMutexClass::WaitForMultipleObjects(PHMHANDLEDATA pHMHandleData,
     400                                                 DWORD   cObjects,
     401                                                 PHANDLE lphObjects,
     402                                                 BOOL    fWaitAll,
     403                                                 DWORD   dwTimeout)
     404{
     405    dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::WaitForMultipleObjects %08x %d %x %d %x",
     406              pHMHandleData->hHMHandle, cObjects, lphObjects, fWaitAll, dwTimeout));
     407
     408    if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) )
     409    {
     410        dprintf(("ERROR: Access denied!!"));
     411        SetLastError(ERROR_ACCESS_DENIED_W);
     412        return WAIT_FAILED_W;
     413    }
     414    return WAIT_FAILED_W;
     415}
     416#endif
     417
    275418/*****************************************************************************
    276419 * Name      : HMReleaseMutex
Note: See TracChangeset for help on using the changeset viewer.