File: clock.c

package info (click to toggle)
funnelweb 3.2-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,692 kB
  • ctags: 1,071
  • sloc: ansic: 9,156; makefile: 45
file content (124 lines) | stat: -rw-r--r-- 3,855 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*##############################################################################

FUNNNELWEB COPYRIGHT
====================
FunnelWeb is a literate-programming macro preprocessor.
The FunnelWeb web is at http://www.ross.net/funnelweb/

Copyright (c) Ross N. Williams 1992. All rights reserved.

This program is free software; you can redistribute it and/or modify
it under the terms of Version 2 of the GNU General Public License as
published by the Free Software Foundation (http://www.gnu.org/).

This program is distributed WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See Version 2 of the GNU General Public License for more details.

You should have received a copy of Version 2 of the GNU General Public
License along with this program. If not, you can obtain a copy as follows:
   ftp://prep.ai.mit.edu/pub/gnu/COPYING-2.0
or write to:
    Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA  02111-1307, USA

Section 2a of the license requires that all changes to this file be
recorded prominently in this file. Please record all changes here.

Programmers:
   RNW  Ross N. Williams (ross@ross.net)

Changes:
   07-May-1992  RNW  Program prepared for release under GNU GPL V2.

##############################################################################*/


/******************************************************************************/
/*                                  CLOCK.C                                   */
/******************************************************************************/

#include "style.h"

#include "as.h"
#include "clock.h"
#include "machin.h"

/******************************************************************************/

#define MAGIC_HEAD (565854L)
#define MAGIC_TAIL (256194L)

/******************************************************************************/

LOCAL void ck_check P_((p_ck_t));
LOCAL void ck_check(p_ck)
p_ck_t p_ck;
{
 as_cold(p_ck!=NULL,"ck_check: Clock pointer is NULL.");
 as_cold(p_ck->ck_mhead==MAGIC_HEAD,
         "ck_check: Magic number at head of record is incorrect.");
 as_cold(p_ck->ck_mtail==MAGIC_TAIL,
         "ck_check: Magic number at tail of record is incorrect.");
}

/******************************************************************************/

EXPORT void ck_ini(p_ck)
p_ck_t p_ck;
{
 p_ck->ck_mhead = MAGIC_HEAD;
 p_ck->ck_run   = FALSE;
 p_ck->ck_csum  = 0.0;
 p_ck->ck_rsum  = 0.0;
 /* ck_csta and ck_rsta are undefined in a stopped clock. */
 p_ck->ck_mtail = MAGIC_TAIL;
}

/******************************************************************************/

EXPORT void ck_start(p_ck)
p_ck_t p_ck;
{
 ck_check(p_ck);
 as_cold(!p_ck->ck_run,"ck_start: Clock is already running!");
 p_ck->ck_run  = TRUE;
 p_ck->ck_csta = tim_cpu();
 p_ck->ck_rsta = tim_real();
}

/******************************************************************************/

EXPORT void ck_stop(p_ck)
p_ck_t p_ck;
{
 ck_check(p_ck);
 as_cold(p_ck->ck_run,"ck_stop: Clock is already stopped!");
 p_ck->ck_run  = FALSE;
 p_ck->ck_csum += tim_cpu () - p_ck->ck_csta;
 p_ck->ck_rsum += tim_real() - p_ck->ck_rsta;
}

/******************************************************************************/

EXPORT float ck_cpu(p_ck)
p_ck_t p_ck;
{
 ck_check(p_ck);
 as_cold(!p_ck->ck_run,"ck_cpu: Clock is running.");
 return p_ck->ck_csum;
}

/******************************************************************************/

EXPORT float ck_real(p_ck)
p_ck_t p_ck;
{
 ck_check(p_ck);
 as_cold(!p_ck->ck_run,"ck_real: Clock is running.");
 return p_ck->ck_rsum;
}

/******************************************************************************/
/*                              End of CLOCK.H                                */
/******************************************************************************/