- Timestamp:
- Jun 21, 2001, 11:07:54 PM (24 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/hmdevice.cpp
r6049 r6060 1 /* $Id: hmdevice.cpp,v 1.2 7 2001-06-19 10:50:23 sandervl Exp $ */1 /* $Id: hmdevice.cpp,v 1.28 2001-06-21 21:07:53 sandervl Exp $ */ 2 2 3 3 /* … … 983 983 984 984 985 /*****************************************************************************986 * Name : DWORD HMDeviceHandler::WaitForSingleObject987 * Purpose : object synchronization988 * Parameters: PHMHANDLEDATA pHMHandleData989 * DWORD dwTimeout990 * Variables :991 * Result : API returncode992 * Remark :993 * Status :994 *995 * Author : Patrick Haller [Wed, 1999/06/17 20:44]996 *****************************************************************************/997 998 DWORD HMDeviceHandler::WaitForSingleObject(PHMHANDLEDATA pHMHandleData,999 DWORD dwTimeout)1000 {1001 dprintf(("KERNEL32: HandleManager::DeviceHandler::WaitForSingleObject(%08xh,%08h)\n",1002 pHMHandleData->hHMHandle,1003 dwTimeout));1004 1005 return(ERROR_INVALID_FUNCTION);1006 }1007 1008 1009 /*****************************************************************************1010 * Name : DWORD HMDeviceHandler::WaitForSingleObjectEx1011 * Purpose : object synchronization1012 * Parameters: PHMHANDLEDATA pHMHandleData1013 * DWORD dwTimeout1014 * BOOL fAlertable1015 * Variables :1016 * Result : API returncode1017 * Remark :1018 * Status :1019 *1020 * Author : Patrick Haller [Wed, 1999/06/17 20:44]1021 *****************************************************************************/1022 1023 DWORD HMDeviceHandler::WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData,1024 DWORD dwTimeout,1025 BOOL fAlertable)1026 {1027 dprintf(("KERNEL32: HandleManager::DeviceHandler::WaitForSingleObjectEx(%08xh,%08h,%08xh) not implemented correctly.\n",1028 pHMHandleData->hHMHandle,1029 dwTimeout,1030 fAlertable));1031 1032 //@@@PH: WARNING mapped to WaitForSingleObject simply. fAlertable missing!1033 return(ERROR_INVALID_FUNCTION);1034 }1035 1036 985 1037 986 /***************************************************************************** … … 1893 1842 return(FALSE); 1894 1843 } 1844 /***************************************************************************** 1845 * Name : BOOL HMDeviceHandler::WaitForSingleObject 1846 * Purpose : 1847 * Variables : 1848 * Result : 1849 * Remark : 1850 * Status : 1851 * 1852 * Author : SvL 1853 *****************************************************************************/ 1854 DWORD HMDeviceHandler::WaitForSingleObject(PHMHANDLEDATA pHMHandleData, 1855 DWORD dwTimeout) 1856 { 1857 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::WaitForSingleObject %08x %x", 1858 pHMHandleData->hHMHandle, dwTimeout)); 1859 1860 return WAIT_FAILED; 1861 } 1862 /***************************************************************************** 1863 * Name : BOOL HMDeviceHandler::WaitForSingleObject 1864 * Purpose : 1865 * Variables : 1866 * Result : 1867 * Remark : 1868 * Status : 1869 * 1870 * Author : SvL 1871 *****************************************************************************/ 1872 DWORD HMDeviceHandler::WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 1873 DWORD dwTimeout, 1874 BOOL fAlertable) 1875 { 1876 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::WaitForSingleObjectEx %08x %x %d", 1877 pHMHandleData->hHMHandle, dwTimeout, fAlertable)); 1878 1879 return WAIT_FAILED; 1880 } 1881 /***************************************************************************** 1882 * Name : BOOL HMDeviceHandler::MsgWaitForMultipleObjects 1883 * Purpose : 1884 * Variables : 1885 * Result : 1886 * Remark : 1887 * Status : 1888 * 1889 * Author : SvL 1890 *****************************************************************************/ 1891 DWORD HMDeviceHandler::MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 1892 DWORD nCount, 1893 LPHANDLE pHandles, 1894 BOOL fWaitAll, 1895 DWORD dwMilliseconds, 1896 DWORD dwWakeMask) 1897 { 1898 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::MsgWaitForMultipleObjects %08x %d %x %d %d %x", 1899 pHMHandleData->hHMHandle, nCount, pHandles, fWaitAll, dwMilliseconds, dwWakeMask)); 1900 1901 return WAIT_FAILED; 1902 } 1903 /***************************************************************************** 1904 * Name : BOOL HMDeviceHandler::WaitForMultipleObjects 1905 * Purpose : 1906 * Variables : 1907 * Result : 1908 * Remark : 1909 * Status : 1910 * 1911 * Author : SvL 1912 *****************************************************************************/ 1913 DWORD HMDeviceHandler::WaitForMultipleObjects (PHMHANDLEDATA pHMHandleData, 1914 DWORD cObjects, 1915 PHANDLE lphObjects, 1916 BOOL fWaitAll, 1917 DWORD dwTimeout) 1918 { 1919 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::WaitForMultipleObjects %08x %d %x %d %x", 1920 pHMHandleData->hHMHandle, cObjects, lphObjects, fWaitAll, dwTimeout)); 1921 1922 return WAIT_FAILED; 1923 } -
trunk/src/kernel32/hmdevice.h
r5587 r6060 1 /* $Id: hmdevice.h,v 1.2 6 2001-04-26 13:22:44sandervl Exp $ */1 /* $Id: hmdevice.h,v 1.27 2001-06-21 21:07:53 sandervl Exp $ */ 2 2 3 3 /* … … 209 209 LPOVERLAPPED lpOverlapped); 210 210 211 211 /* this is a handler method for calls to WaitForSingleObject */ 212 212 virtual DWORD WaitForSingleObject (PHMHANDLEDATA pHMHandleData, 213 213 DWORD dwTimeout); 214 214 215 215 /* this is a handler method for calls to WaitForSingleObjectEx */ 216 216 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 217 217 DWORD dwTimeout, 218 218 BOOL fAlertable); 219 219 220 virtual DWORD MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 221 DWORD nCount, 222 PHANDLE pHandles, 223 BOOL fWaitAll, 224 DWORD dwMilliseconds, 225 DWORD dwWakeMask); 226 227 virtual DWORD WaitForMultipleObjects (PHMHANDLEDATA pHMHandleData, 228 DWORD cObjects, 229 PHANDLE lphObjects, 230 BOOL fWaitAll, 231 DWORD dwTimeout); 220 232 221 233 /*************************************************************************** -
trunk/src/kernel32/hmevent.cpp
r6049 r6060 1 /* $Id: hmevent.cpp,v 1. 5 2001-06-19 10:50:24sandervl Exp $ */1 /* $Id: hmevent.cpp,v 1.6 2001-06-21 21:07:53 sandervl Exp $ */ 2 2 3 3 /* … … 32 32 #ifdef USE_OS2SEMAPHORES 33 33 #define INCL_DOSSEMAPHORES 34 #define INCL_DOSERRORS 34 35 #include <os2wrap.h> 35 36 #include <win32type.h> … … 111 112 //unblocked and the app must manually reset the event semaphore 112 113 //Automatic reset -> only one waiting thread unblocked & state reset 113 rc = DosCreateEventSem(lpszEventName, &hev, (fManualReset) ? 0 : DCE_POSTONE, fInitialState);114 rc = DosCreateEventSem(lpszEventName, &hev, (fManualReset) ? 0 : (DCE_POSTONE|DCE_AUTORESET), fInitialState); 114 115 115 116 if(rc) { … … 292 293 #endif 293 294 295 #ifdef USE_OS2SEMAPHORES 296 /***************************************************************************** 297 * Name : DWORD HMDeviceEventClass::WaitForSingleObject 298 * Purpose : object synchronization 299 * Parameters: PHMHANDLEDATA pHMHandleData 300 * DWORD dwTimeout 301 * Variables : 302 * Result : API returncode 303 * Remark : 304 * Status : 305 * 306 * Author : SvL 307 *****************************************************************************/ 308 309 DWORD HMDeviceEventClass::WaitForSingleObject(PHMHANDLEDATA pHMHandleData, 310 DWORD dwTimeout) 311 { 312 DWORD rc; 313 314 dprintf2(("KERNEL32: HMDeviceEventClass::WaitForSingleObject(%08xh %08xh)", 315 pHMHandleData->hHMHandle, dwTimeout)); 316 317 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 318 { 319 dprintf(("ERROR: Access denied!!")); 320 SetLastError(ERROR_ACCESS_DENIED_W); 321 return WAIT_FAILED_W; 322 } 323 324 rc = DosWaitEventSem(pHMHandleData->hHMHandle, dwTimeout); 325 if(rc && rc != ERROR_INTERRUPT && rc != ERROR_TIMEOUT && rc != ERROR_SEM_OWNER_DIED) { 326 dprintf(("DosWaitEventSem %x failed with rc %d", pHMHandleData->hHMHandle, rc)); 327 SetLastError(error2WinError(rc)); 328 return WAIT_FAILED_W; 329 } 330 SetLastError(ERROR_SUCCESS_W); 331 if(rc == ERROR_INTERRUPT || rc == ERROR_SEM_OWNER_DIED) { 332 return WAIT_ABANDONED_W; 333 } 334 else 335 if(rc == ERROR_TIMEOUT) { 336 return WAIT_TIMEOUT_W; 337 } 338 return WAIT_OBJECT_0_W; 339 } 340 #endif 341 342 #ifdef USE_OS2SEMAPHORES 343 /***************************************************************************** 344 * Name : DWORD HMDeviceEventClass::WaitForSingleObjectEx 345 * Purpose : object synchronization 346 * Parameters: PHMHANDLEDATA pHMHandleData 347 * DWORD dwTimeout 348 * BOOL fAlertable 349 * Variables : 350 * Result : API returncode 351 * Remark : 352 * Status : 353 * 354 * Author : SvL 355 *****************************************************************************/ 356 357 DWORD HMDeviceEventClass::WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 358 DWORD dwTimeout, 359 BOOL fAlertable) 360 { 361 dprintf2(("KERNEL32: HMDeviceEventClass::WaitForSingleObjectEx(%08xh,%08h,%08xh) not implemented correctly.\n", 362 pHMHandleData->hHMHandle, dwTimeout, fAlertable)); 363 364 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 365 { 366 dprintf(("ERROR: Access denied!!")); 367 SetLastError(ERROR_ACCESS_DENIED_W); 368 return WAIT_FAILED_W; 369 } 370 371 return WaitForSingleObject(pHMHandleData, dwTimeout); 372 } 373 #endif 374 375 #ifdef USE_OS2SEMAPHORES 376 /***************************************************************************** 377 * Name : BOOL HMDeviceEventClass::MsgWaitForMultipleObjects 378 * Purpose : 379 * Variables : 380 * Result : 381 * Remark : 382 * Status : 383 * 384 * Author : SvL 385 *****************************************************************************/ 386 DWORD HMDeviceEventClass::MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 387 DWORD nCount, 388 PHANDLE pHandles, 389 BOOL fWaitAll, 390 DWORD dwMilliseconds, 391 DWORD dwWakeMask) 392 { 393 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::MsgWaitForMultipleObjects %08x %d %x %d %d %x", 394 pHMHandleData->hHMHandle, nCount, pHandles, fWaitAll, dwMilliseconds, dwWakeMask)); 395 396 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 397 { 398 dprintf(("ERROR: Access denied!!")); 399 SetLastError(ERROR_ACCESS_DENIED_W); 400 return WAIT_FAILED_W; 401 } 402 403 return WAIT_FAILED_W; 404 } 405 #endif 406 407 #ifdef USE_OS2SEMAPHORES 408 /***************************************************************************** 409 * Name : BOOL HMDeviceHandler::WaitForMultipleObjects 410 * Purpose : 411 * Variables : 412 * Result : 413 * Remark : 414 * Status : 415 * 416 * Author : SvL 417 *****************************************************************************/ 418 DWORD HMDeviceEventClass::WaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 419 DWORD cObjects, 420 PHANDLE lphObjects, 421 BOOL fWaitAll, 422 DWORD dwTimeout) 423 { 424 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::WaitForMultipleObjects %08x %d %x %d %x", 425 pHMHandleData->hHMHandle, cObjects, lphObjects, fWaitAll, dwTimeout)); 426 427 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 428 { 429 dprintf(("ERROR: Access denied!!")); 430 SetLastError(ERROR_ACCESS_DENIED_W); 431 return WAIT_FAILED_W; 432 } 433 434 return WAIT_FAILED_W; 435 } 436 #endif 437 294 438 /***************************************************************************** 295 439 * Name : HMSetEvent -
trunk/src/kernel32/hmevent.h
r6049 r6060 1 /* $Id: hmevent.h,v 1. 3 2001-06-19 10:50:24sandervl Exp $ */1 /* $Id: hmevent.h,v 1.4 2001-06-21 21:07:53 sandervl Exp $ */ 2 2 3 3 /* … … 36 36 { 37 37 public: 38 #ifdef USE_OS2SEMAPHORES 39 HMDeviceEventClass(LPCSTR lpDeviceName) : HMDeviceHandler(lpDeviceName) {} 40 #else 38 41 HMDeviceEventClass(LPCSTR lpDeviceName) : HMDeviceOpen32Class(lpDeviceName) {} 42 #endif 39 43 40 44 /* this is a handler method for calls to CreateEvent() */ … … 56 60 DWORD fdwOptions, 57 61 DWORD fdwOdinOptions); 62 63 /* this is a handler method for calls to WaitForSingleObject */ 64 virtual DWORD WaitForSingleObject (PHMHANDLEDATA pHMHandleData, 65 DWORD dwTimeout); 66 67 /* this is a handler method for calls to WaitForSingleObjectEx */ 68 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 69 DWORD dwTimeout, 70 BOOL fAlertable); 71 72 virtual DWORD MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 73 DWORD nCount, 74 PHANDLE pHandles, 75 BOOL fWaitAll, 76 DWORD dwMilliseconds, 77 DWORD dwWakeMask); 78 79 virtual DWORD WaitForMultipleObjects (PHMHANDLEDATA pHMHandleData, 80 DWORD cObjects, 81 PHANDLE lphObjects, 82 BOOL fWaitAll, 83 DWORD dwTimeout); 84 58 85 #endif 59 86 -
trunk/src/kernel32/hmmutex.cpp
r6049 r6060 1 /* $Id: hmmutex.cpp,v 1. 4 2001-06-19 10:50:25sandervl Exp $ */1 /* $Id: hmmutex.cpp,v 1.5 2001-06-21 21:07:53 sandervl Exp $ */ 2 2 3 3 /* … … 31 31 #ifdef USE_OS2SEMAPHORES 32 32 #define INCL_DOSSEMAPHORES 33 #define INCL_DOSERRORS 33 34 #include <os2wrap.h> 34 35 #include <win32type.h> … … 273 274 #endif 274 275 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 291 DWORD 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 339 DWORD 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 *****************************************************************************/ 368 DWORD 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 *****************************************************************************/ 399 DWORD 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 275 418 /***************************************************************************** 276 419 * Name : HMReleaseMutex -
trunk/src/kernel32/hmmutex.h
r6049 r6060 1 /* $Id: hmmutex.h,v 1. 3 2001-06-19 10:50:25sandervl Exp $ */1 /* $Id: hmmutex.h,v 1.4 2001-06-21 21:07:54 sandervl Exp $ */ 2 2 3 3 /* … … 36 36 { 37 37 public: 38 #ifdef USE_OS2SEMAPHORES 39 HMDeviceMutexClass(LPCSTR lpDeviceName) : HMDeviceHandler(lpDeviceName) {} 40 #else 38 41 HMDeviceMutexClass(LPCSTR lpDeviceName) : HMDeviceOpen32Class(lpDeviceName) {} 42 #endif 39 43 40 44 /* this is a handler method for calls to CreateMutex() */ … … 60 64 DWORD fdwOptions, 61 65 DWORD fdwOdinOptions); 66 67 /* this is a handler method for calls to WaitForSingleObject */ 68 virtual DWORD WaitForSingleObject (PHMHANDLEDATA pHMHandleData, 69 DWORD dwTimeout); 70 71 /* this is a handler method for calls to WaitForSingleObjectEx */ 72 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 73 DWORD dwTimeout, 74 BOOL fAlertable); 75 76 virtual DWORD MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 77 DWORD nCount, 78 PHANDLE pHandles, 79 BOOL fWaitAll, 80 DWORD dwMilliseconds, 81 DWORD dwWakeMask); 82 83 virtual DWORD WaitForMultipleObjects (PHMHANDLEDATA pHMHandleData, 84 DWORD cObjects, 85 PHANDLE lphObjects, 86 BOOL fWaitAll, 87 DWORD dwTimeout); 62 88 #endif 63 89 -
trunk/src/kernel32/hmsemaphore.cpp
r6049 r6060 1 /* $Id: hmsemaphore.cpp,v 1. 4 2001-06-19 10:50:25sandervl Exp $ */1 /* $Id: hmsemaphore.cpp,v 1.5 2001-06-21 21:07:54 sandervl Exp $ */ 2 2 3 3 /* … … 8 8 * TODO: No inheritance when CreateSemaphore is called for existing named event semaphore? 9 9 * (see HMCreateSemaphore in handlemanager.cpp) 10 * TODO: OpenSemaphore does not work right now! initialcount/maximumcount) 10 11 * TODO: Name collisions with files & mutex not allowed. Check if this can happen in OS/2 11 12 * TODO: Does NOT work for sharing semaphores between processes!! … … 33 34 #ifdef USE_OS2SEMAPHORES 34 35 #define INCL_DOSSEMAPHORES 36 #define INCL_DOSERRORS 35 37 #include <os2wrap.h> 36 38 #include <win32type.h> … … 115 117 lpszSemaphoreName = szSemName; 116 118 } 117 //Manual reset means all threads waiting on the event semaphore will be118 //unblocked and the app must manually reset the event semaphore119 //Automatic reset -> only one waiting thread unblocked & state reset120 119 rc = DosCreateEventSem(lpszSemaphoreName, &hev, DCE_POSTONE, lInitialCount); 121 120 … … 127 126 pHMHandleData->dwAccess = SEMAPHORE_ALL_ACCESS_W; 128 127 pHMHandleData->dwFlags = lMaximumCount; 128 pHMHandleData->dwCreation= lInitialCount; 129 129 pHMHandleData->hHMHandle = hev; 130 130 return ERROR_SUCCESS_W; … … 176 176 char szSemName[CCHMAXPATH]; 177 177 178 //TODO: NOT WORKING (initialcount/maximumcount) 178 179 dprintf(("KERNEL32: HandleManager::Semaphore::OpenSemaphore(%08xh,%08xh,%s)\n", 179 180 pHMHandleData, … … 293 294 } 294 295 pHMHandleData->dwAccess = fdwAccess; 295 pHMHandleData->dwFlags = pHMSrcHandle->dwFlags; //lMaximumCount; 296 pHMHandleData->dwFlags = pHMSrcHandle->dwFlags; //lMaximumCount; 297 pHMHandleData->dwCreation= pHMSrcHandle->dwCreation; //lInitialCount; 296 298 pHMHandleData->hHMHandle = hev; 297 299 SetLastError(ERROR_SUCCESS_W); 298 300 return TRUE; 301 } 302 #endif 303 304 #ifdef USE_OS2SEMAPHORES 305 /***************************************************************************** 306 * Name : DWORD HMDeviceSemaphoreClass::WaitForSingleObject 307 * Purpose : object synchronization 308 * Parameters: PHMHANDLEDATA pHMHandleData 309 * DWORD dwTimeout 310 * Variables : 311 * Result : API returncode 312 * Remark : 313 * Status : 314 * 315 * Author : SvL 316 *****************************************************************************/ 317 318 DWORD HMDeviceSemaphoreClass::WaitForSingleObject(PHMHANDLEDATA pHMHandleData, 319 DWORD dwTimeout) 320 { 321 DWORD rc; 322 323 dprintf2(("KERNEL32: HMDeviceSemaphoreClass::WaitForSingleObject(%08xh %08xh)", 324 pHMHandleData->hHMHandle, dwTimeout)); 325 326 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 327 { 328 dprintf(("ERROR: Access denied!!")); 329 SetLastError(ERROR_ACCESS_DENIED_W); 330 return WAIT_FAILED_W; 331 } 332 333 rc = DosWaitEventSem(pHMHandleData->hHMHandle, dwTimeout); 334 if(rc && rc != ERROR_INTERRUPT && rc != ERROR_TIMEOUT && rc != ERROR_SEM_OWNER_DIED) { 335 dprintf(("DosWaitEventSem %x failed with rc %d", pHMHandleData->hHMHandle, rc)); 336 SetLastError(error2WinError(rc)); 337 return WAIT_FAILED_W; 338 } 339 SetLastError(ERROR_SUCCESS_W); 340 if(rc == ERROR_INTERRUPT || rc == ERROR_SEM_OWNER_DIED) { 341 return WAIT_ABANDONED_W; 342 } 343 else 344 if(rc == ERROR_TIMEOUT) { 345 return WAIT_TIMEOUT_W; 346 } 347 return WAIT_OBJECT_0_W; 348 } 349 #endif 350 351 #ifdef USE_OS2SEMAPHORES 352 /***************************************************************************** 353 * Name : DWORD HMDeviceSemaphoreClass::WaitForSingleObjectEx 354 * Purpose : object synchronization 355 * Parameters: PHMHANDLEDATA pHMHandleData 356 * DWORD dwTimeout 357 * BOOL fAlertable 358 * Variables : 359 * Result : API returncode 360 * Remark : 361 * Status : 362 * 363 * Author : SvL 364 *****************************************************************************/ 365 366 DWORD HMDeviceSemaphoreClass::WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 367 DWORD dwTimeout, 368 BOOL fAlertable) 369 { 370 dprintf2(("KERNEL32: HMDeviceSemaphoreClass::WaitForSingleObjectEx(%08xh,%08h,%08xh) not implemented correctly.\n", 371 pHMHandleData->hHMHandle, dwTimeout, fAlertable)); 372 373 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 374 { 375 dprintf(("ERROR: Access denied!!")); 376 SetLastError(ERROR_ACCESS_DENIED_W); 377 return WAIT_FAILED_W; 378 } 379 380 return WaitForSingleObject(pHMHandleData, dwTimeout); 381 } 382 #endif 383 384 #ifdef USE_OS2SEMAPHORES 385 /***************************************************************************** 386 * Name : BOOL HMDeviceSemaphoreClass::MsgWaitForMultipleObjects 387 * Purpose : 388 * Variables : 389 * Result : 390 * Remark : 391 * Status : 392 * 393 * Author : SvL 394 *****************************************************************************/ 395 DWORD HMDeviceSemaphoreClass::MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 396 DWORD nCount, 397 PHANDLE pHandles, 398 BOOL fWaitAll, 399 DWORD dwMilliseconds, 400 DWORD dwWakeMask) 401 { 402 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::MsgWaitForMultipleObjects %08x %d %x %d %d %x", 403 pHMHandleData->hHMHandle, nCount, pHandles, fWaitAll, dwMilliseconds, dwWakeMask)); 404 405 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 406 { 407 dprintf(("ERROR: Access denied!!")); 408 SetLastError(ERROR_ACCESS_DENIED_W); 409 return WAIT_FAILED_W; 410 } 411 412 return WAIT_FAILED_W; 413 } 414 #endif 415 416 #ifdef USE_OS2SEMAPHORES 417 /***************************************************************************** 418 * Name : BOOL HMDeviceSemaphoreClass::WaitForMultipleObjects 419 * Purpose : 420 * Variables : 421 * Result : 422 * Remark : 423 * Status : 424 * 425 * Author : SvL 426 *****************************************************************************/ 427 DWORD HMDeviceSemaphoreClass::WaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 428 DWORD cObjects, 429 PHANDLE lphObjects, 430 BOOL fWaitAll, 431 DWORD dwTimeout) 432 { 433 dprintf(("KERNEL32: ERROR: HandleManager::DeviceHandler::WaitForMultipleObjects %08x %d %x %d %x", 434 pHMHandleData->hHMHandle, cObjects, lphObjects, fWaitAll, dwTimeout)); 435 436 if(!(pHMHandleData->dwAccess & SYNCHRONIZE_W) ) 437 { 438 dprintf(("ERROR: Access denied!!")); 439 SetLastError(ERROR_ACCESS_DENIED_W); 440 return WAIT_FAILED_W; 441 } 442 443 return WAIT_FAILED_W; 299 444 } 300 445 #endif -
trunk/src/kernel32/hmsemaphore.h
r6049 r6060 1 /* $Id: hmsemaphore.h,v 1. 3 2001-06-19 10:50:25sandervl Exp $ */1 /* $Id: hmsemaphore.h,v 1.4 2001-06-21 21:07:54 sandervl Exp $ */ 2 2 3 3 /* … … 36 36 { 37 37 public: 38 #ifdef USE_OS2SEMAPHORES 39 HMDeviceSemaphoreClass(LPCSTR lpDeviceName) : HMDeviceHandler(lpDeviceName) {} 40 #else 38 41 HMDeviceSemaphoreClass(LPCSTR lpDeviceName) : HMDeviceOpen32Class(lpDeviceName) {} 42 #endif 39 43 40 44 /* this is a handler method for calls to CreateSemaphore() */ … … 61 65 DWORD fdwOptions, 62 66 DWORD fdwOdinOptions); 67 68 /* this is a handler method for calls to WaitForSingleObject */ 69 virtual DWORD WaitForSingleObject (PHMHANDLEDATA pHMHandleData, 70 DWORD dwTimeout); 71 72 /* this is a handler method for calls to WaitForSingleObjectEx */ 73 virtual DWORD WaitForSingleObjectEx(PHMHANDLEDATA pHMHandleData, 74 DWORD dwTimeout, 75 BOOL fAlertable); 76 77 virtual DWORD MsgWaitForMultipleObjects(PHMHANDLEDATA pHMHandleData, 78 DWORD nCount, 79 PHANDLE pHandles, 80 BOOL fWaitAll, 81 DWORD dwMilliseconds, 82 DWORD dwWakeMask); 83 84 virtual DWORD WaitForMultipleObjects (PHMHANDLEDATA pHMHandleData, 85 DWORD cObjects, 86 PHANDLE lphObjects, 87 BOOL fWaitAll, 88 DWORD dwTimeout); 89 63 90 #endif 64 91 -
trunk/src/kernel32/kernel32.mak
r5830 r6060 1 # $Id: kernel32.mak,v 1. 6 2001-05-30 01:36:07 phallerExp $1 # $Id: kernel32.mak,v 1.7 2001-06-21 21:07:54 sandervl Exp $ 2 2 3 3 # … … 16 16 # 17 17 !include ../../makefile.inc 18 19 # 20 # Overrides. 21 # 22 ##CDEFINES = $(CDEFINES) -DUSE_OS2SEMAPHORES 23 18 24 19 25 # -
trunk/src/kernel32/oslibdos.cpp
r6053 r6060 1 /* $Id: oslibdos.cpp,v 1.6 7 2001-06-20 20:51:58sandervl Exp $ */1 /* $Id: oslibdos.cpp,v 1.68 2001-06-21 21:07:54 sandervl Exp $ */ 2 2 /* 3 3 * Wrappers for OS/2 Dos* API … … 134 134 135 135 case ERROR_INVALID_ACCESS: //12 136 return ERROR_INVALID_ACCESS_W;136 return ERROR_INVALID_ACCESS_W; 137 137 138 138 case ERROR_NO_MORE_FILES: //18 … … 177 177 case ERROR_DEVICE_IN_USE: //99 178 178 return ERROR_DEVICE_IN_USE_W; 179 180 case ERROR_TOO_MANY_SEMAPHORES: //100 181 return ERROR_TOO_MANY_SEMAPHORES_W; 179 182 180 183 case ERROR_DRIVE_LOCKED: //108
Note:
See TracChangeset
for help on using the changeset viewer.