home *** CD-ROM | disk | FTP | other *** search
/ ftp.ee.lbl.gov / 2014.05.ftp.ee.lbl.gov.tar / ftp.ee.lbl.gov / acld-1.11.tar.gz / acld-1.11.tar / acld-1.11 / timer.c < prev    next >
C/C++ Source or Header  |  2008-10-24  |  2KB  |  75 lines

  1. /*
  2.  * Copyright (c) 2002, 2006, 2008
  3.  *    The Regents of the University of California.  All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that: (1) source code distributions
  7.  * retain the above copyright notice and this paragraph in its entirety, (2)
  8.  * distributions including binary code include the above copyright notice and
  9.  * this paragraph in its entirety in the documentation or other materials
  10.  * provided with the distribution, and (3) all advertising materials mentioning
  11.  * features or use of this software display the following acknowledgement:
  12.  * ``This product includes software developed by the University of California,
  13.  * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
  14.  * the University nor the names of its contributors may be used to endorse
  15.  * or promote products derived from this software without specific prior
  16.  * written permission.
  17.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  18.  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  19.  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  20.  */
  21.  
  22. #ifndef lint
  23. static const char rcsid[] =
  24.     "@(#) $Id: timer.c 529 2008-10-24 06:57:49Z leres $ (LBL)";
  25. #endif
  26.  
  27. #include <sys/types.h>
  28. #include <sys/time.h>
  29.  
  30. #include <stdio.h>
  31.  
  32. #include "acld.h"
  33.  
  34. /* Return seconds left (or -1 if not pending) */
  35. int
  36. timercheck(struct timer *tp)
  37. {
  38.     int i;
  39.     struct timeval tv;
  40.  
  41.     if (tp->duetime == 0)
  42.         return (-1);
  43.     getts(&tv);
  44.     i = tp->duetime - tv.tv_sec;
  45.     if (i < 0)
  46.         i = 0;
  47.     return (i);
  48. }
  49.  
  50. int
  51. timerdue(struct timer *tp)
  52. {
  53.  
  54.     if (timercheck(tp) != 0)
  55.         return (0);
  56.     timerreset(tp);
  57.     return (1);
  58. }
  59.  
  60. void
  61. timerreset(struct timer *tp)
  62. {
  63.  
  64.     tp->duetime = 0;
  65. }
  66.  
  67. void
  68. timerset(struct timer *tp, int secs)
  69. {
  70.     struct timeval tv;
  71.  
  72.     getts(&tv);
  73.     tp->duetime = tv.tv_sec + secs;
  74. }
  75.