home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / nsprpub / pr / src / md / os2 / os2sem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  1.8 KB  |  75 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  2. /*
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  * 
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  * 
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18.  
  19. /*
  20.  * OS/2-specific semaphore handling code.
  21.  *
  22.  */
  23.  
  24. #include "primpl.h"
  25.  
  26.  
  27. PR_IMPLEMENT(void) 
  28. _PR_MD_NEW_SEM(_MDSemaphore *md, PRUintn value)
  29. {
  30.    int rv;
  31.  
  32.     /* Our Sems don't support a value > 1 */
  33.     PR_ASSERT(value <= 1);
  34.  
  35.     rv = DosCreateEventSem(NULL, &md->sem, 0, 0);
  36.     PR_ASSERT(rv == NO_ERROR);
  37. }
  38.  
  39. PR_IMPLEMENT(void) 
  40. _PR_MD_DESTROY_SEM(_MDSemaphore *md)
  41. {
  42.    int rv;
  43.    rv = DosCloseEventSem(md->sem);
  44.    PR_ASSERT(rv == NO_ERROR);
  45.  
  46. }
  47.  
  48. PR_IMPLEMENT(PRStatus) 
  49. _PR_MD_TIMED_WAIT_SEM(_MDSemaphore *md, PRIntervalTime ticks)
  50. {
  51.     int rv;
  52.     rv = DosWaitEventSem(md->sem, PR_IntervalToMilliseconds(ticks));
  53.  
  54.     if (rv == NO_ERROR)
  55.         return PR_SUCCESS;
  56.     else
  57.         return PR_FAILURE;
  58. }
  59.  
  60. PR_IMPLEMENT(PRStatus) 
  61. _PR_MD_WAIT_SEM(_MDSemaphore *md)
  62. {
  63.     return _PR_MD_TIMED_WAIT_SEM(md, PR_INTERVAL_NO_TIMEOUT);
  64. }
  65.  
  66. PR_IMPLEMENT(void) 
  67. _PR_MD_POST_SEM(_MDSemaphore *md)
  68. {
  69.    int rv;
  70.    rv = DosPostEventSem(md->sem);
  71.    PR_ASSERT(rv == NO_ERROR); 
  72. }
  73.  
  74.  
  75.