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 */
/******************************************************************************/
|