Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/runtime/kernel/timers.c
ViewVC logotype

Annotation of /sml/trunk/src/runtime/kernel/timers.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (view) (download) (as text)

1 : monnier 2 /* timers.c
2 :     *
3 :     * COPYRIGHT (c) 1995 by AT&T Bell Laboratories.
4 :     *
5 :     * OS independent timer routines; these rely on a OS dependent implementation
6 :     * of the following function:
7 :     *
8 :     * void GetCPUTime (Time_t *user_t, Time_t *sys_t);
9 :     */
10 :    
11 :     #include "ml-base.h"
12 :     #include "vproc-state.h"
13 :     #include "ml-timer.h"
14 :    
15 :    
16 :     /* ResetTimers:
17 :     *
18 :     * Clear the GC timers.
19 :     */
20 :     void ResetTimers (vproc_state_t *vsp)
21 :     {
22 :     vsp->vp_gcTime->seconds = 0;
23 :     vsp->vp_gcTime->uSeconds = 0;
24 :    
25 :     } /* end of ResetTimers. */
26 :    
27 :    
28 :     /* StartGCTimer:
29 :     */
30 :     void StartGCTimer (vproc_state_t *vsp)
31 :     {
32 :     GetCPUTime (vsp->vp_gcTime0, NIL(Time_t *));
33 :    
34 :     } /* end of StartGCTimer */
35 :    
36 :    
37 :     /* StopGCTimer:
38 :     *
39 :     * Stop the garbage collection timer and update the cumulative garbage collection
40 :     * time. If time is not NIL, then return the time (in ms.) spent since
41 :     * the start of the GC.
42 :     */
43 :     void StopGCTimer (vproc_state_t *vsp, long *time)
44 :     {
45 :     int sec, usec;
46 :     Time_t t1;
47 :     Time_t *gt0 = vsp->vp_gcTime0;
48 :     Time_t *gt = vsp->vp_gcTime;
49 :    
50 :     GetCPUTime (&t1, NIL(Time_t *));
51 :    
52 :     sec = t1.seconds - gt0->seconds;
53 :     usec = t1.uSeconds - gt0->uSeconds;
54 :    
55 :     if (time != NIL(long *)) {
56 :     if (usec < 0) {
57 :     sec--; usec += 1000000;
58 :     }
59 :     else if (usec > 1000000) {
60 :     sec++; usec -= 1000000;
61 :     }
62 :     *time = (usec/1000 + sec*1000);
63 :     }
64 :    
65 :     sec = gt->seconds + sec;
66 :     usec = gt->uSeconds + usec;
67 :     if (usec < 0) {
68 :     sec--; usec += 1000000;
69 :     }
70 :     else if (usec > 1000000) {
71 :     sec++; usec -= 1000000;
72 :     }
73 :     gt->seconds = sec;
74 :     gt->uSeconds = usec;
75 :    
76 :     } /* end of StopGCTimer */
77 :    

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0