1 /* Implement timing-related runtime actions for CHILL.
2 Copyright (C) 1992,1993 Free Software Foundation, Inc.
5 This file is part of GNU CC.
7 GNU CC is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 GNU CC is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GNU CC; see the file COPYING. If not, write to
19 the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
24 EXCEPTION (timerfail);
27 * function __wait_until
30 * abstime absolute time value
35 * int 0 on success, 1 on failure
41 * check for given argument is valid, calculate how long to wait in
42 * seconds and call os to do it.
47 __wait_until (abstime, filename, linenumber)
48 unsigned long abstime;
52 RtsTime now, delta, abs_rtstime;
54 /* get current time */
57 abs_rtstime.secs = abstime;
58 abs_rtstime.nanosecs = 0;
60 if (abs_rtstime.nanosecs < now.nanosecs)
63 abs_rtstime.nanosecs += 1000000000;
66 delta.secs = abs_rtstime.secs - now.secs;
67 delta.nanosecs = abs_rtstime.nanosecs - now.nanosecs;
69 if (delta.secs > abs_rtstime.secs)
70 /* cannot wait into past */
73 return __delay_this (wait_wait, &delta, filename, linenumber) == 1 ? 0 : 1;