2 * clock - determine the processor time used
4 /* $Id: clock.c,v 1.4 1994/06/24 11:58:00 ceriel Exp $ */
11 long tv_sec; /* seconds */
12 long tv_usec; /* and microseconds */
16 #define RUSAGE_CHILDREN -1
19 struct timeval ru_utime; /* user time used */
20 struct timeval ru_stime; /* system time used */
22 long ru_ixrss; /* integral shared memory size */
23 long ru_idrss; /* integral unshared data size */
24 long ru_isrss; /* integral unshared stack size */
25 long ru_minflt; /* page reclaims */
26 long ru_majflt; /* page faults */
27 long ru_nswap; /* swaps */
28 long ru_inblock; /* block input operations */
29 long ru_oublock; /* block output operations */
30 long ru_msgsnd; /* messages sent */
31 long ru_msgrcv; /* messages received */
32 long ru_nsignals; /* signals received */
33 long ru_nvcsw; /* voluntary context switches */
34 long ru_nivcsw; /* involuntary context switches */
37 void _getrusage(int who, struct rusage *rusage);
39 #elif defined(_POSIX_SOURCE) || defined(__USG)
42 time_t tms_utime; /* user time */
43 time_t tms_stime; /* system time */
44 time_t tms_cutime; /* user time, children */
45 time_t tms_cstime; /* system time, children */
48 long _times(struct tms *buffer);
50 #else /* Version 7 UNIX */
54 long proc_system_time;
56 long child_system_time;
59 long _times(struct tbuffer *buffer);
69 _getrusage(RUSAGE_SELF, &rusage);
71 return (((unsigned long)rusage.ru_utime.tv_sec * CLOCKS_PER_SEC)
72 + rusage.ru_utime.tv_usec);
73 #elif defined(_POSIX_SOURCE) || defined(__USG)
77 /* Assume that time_t can be converted to clock_t for Sys5 */
80 struct tbuffer tbuffer;
83 return tbuffer.proc_user_time;