home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / os / vms / 17749 < prev    next >
Encoding:
Internet Message Format  |  1992-11-10  |  2.1 KB

  1. Path: sparky!uunet!ogicse!cadreor!fripp!cadre.com!rj
  2. From: rj@cadre.com (Rob deFriesse)
  3. Newsgroups: comp.os.vms
  4. Subject: Re: sys$hiber/sys$wake problems?
  5. Message-ID: <1992Nov10.180054.23127@fripp.ri.cadre.com>
  6. Date: 10 Nov 92 18:00:54 GMT
  7. Article-I.D.: fripp.1992Nov10.180054.23127
  8. References: <BxIAFn.2p6@unx.sas.com>
  9. Sender: usenet@fripp.ri.cadre.com (USENET News Poster Account)
  10. Reply-To: rj@cadre.com
  11. Organization: Cadre Technologies Inc.
  12. Lines: 56
  13. Nntp-Posting-Host: 192.9.200.166
  14.  
  15. sasjzs@falcon.unx.sas.com (Joseph Slater) writes:
  16. : Hi folks,
  17. :  I have an application that hibernates and is awakened by ast
  18. : routines that call sys$wake. The details are far too complicated 
  19. : to get into here, but the calls to wake frequently happen about
  20. : time the call is made to sys$hiber. Has anyone ever seen a sys$hiber
  21. : return when there is (or should be) no outstanding sys$wake?
  22. : Any advice will be appreciated. Any heckling will be ignored.
  23. : Joe Slater
  24. : sasjzs@vms.sas.com
  25. : Mine opinion is mine only.
  26.  
  27. In the System Services manual under the section on $HIBER you will read the
  28. following paragraph.
  29.  
  30.     If one or more wakeup requests are issued for the process while it is not
  31.     hibernating, the next hibernate call returns immediately;  that is, the
  32.     process does not hibernate.  ...
  33.  
  34. This is, in fact, the correct behavior for a semaphore.  If it doesn't work
  35. this way, your process could block indefinately.
  36.  
  37. It is always a good idea to place your $HIBER in a loop that terminates when
  38. the true wakeup condition occurs.  For example:
  39.  
  40. static int flag;
  41.  
  42. void
  43. ast_handler (int astprm)
  44. {
  45.     flag++;               /* set before WAKE call */
  46.     SYS$WAKE (0, 0);
  47. }
  48.  
  49.     ...
  50.  
  51.     flag = 0;         /* Assumes no ASTs queued */
  52.     SYS$QIO ( ... );  /* specifies ast_handler */
  53.  
  54.     ...
  55.  
  56.     while (!flag)
  57.         SYS$HIBER ();
  58.  
  59.     ...
  60.  
  61. --
  62.  
  63.   Rob deFriesse                                          Mail:    rj@cadre.com
  64.   Cadre Technologies Inc.                                Phone: (401) 351-5950
  65.   222 Richmond St.                                       Fax:   (401) 351-7380
  66.   Providence, RI  02903
  67.  
  68.   My opinions are my own and do not represent the position of Cadre in any way.
  69.