2011-03-30 13:49:47 +00:00
|
|
|
.TH CPUTIME 2
|
|
|
|
.SH NAME
|
|
|
|
cputime, times, cycles \- cpu time in this process and children
|
|
|
|
.SH SYNOPSIS
|
|
|
|
.B #include <u.h>
|
|
|
|
.br
|
|
|
|
.B #include <libc.h>
|
|
|
|
.PP
|
|
|
|
.ta \w'\fLdouble 'u
|
|
|
|
.B
|
2019-04-09 18:34:17 +00:00
|
|
|
long times(long t[4])
|
2011-03-30 13:49:47 +00:00
|
|
|
.PP
|
|
|
|
.B
|
|
|
|
double cputime(void)
|
|
|
|
.PP
|
|
|
|
.B
|
2015-05-28 16:11:45 +00:00
|
|
|
void cycles(uvlong *cyclep)
|
2011-03-30 13:49:47 +00:00
|
|
|
.SH DESCRIPTION
|
|
|
|
If
|
|
|
|
.I t
|
|
|
|
is non-null,
|
|
|
|
.I times
|
|
|
|
fills it in
|
|
|
|
with the number of milliseconds spent in user code, system calls,
|
|
|
|
child processes in user code, and child processes in system calls.
|
|
|
|
.I Cputime
|
|
|
|
returns the sum of those same times, converted to seconds.
|
|
|
|
.I Times
|
|
|
|
returns the elapsed real time, in milliseconds, that the process has been running.
|
|
|
|
.PP
|
|
|
|
These functions read
|
|
|
|
.BR /dev/cputime ,
|
|
|
|
opening that file when they are first called.
|
|
|
|
.PP
|
|
|
|
.I Cycles
|
|
|
|
reads the processor's timestamp counter of cycles since reset,
|
|
|
|
if any, and stores it via
|
|
|
|
.IR cyclep .
|
|
|
|
Currently supported architectures are
|
|
|
|
.BR 386 ,
|
|
|
|
.BR amd64 ,
|
2021-07-23 15:10:01 +00:00
|
|
|
.B arm64
|
2011-03-30 13:49:47 +00:00
|
|
|
and
|
|
|
|
.BR power ;
|
|
|
|
on all others,
|
|
|
|
.I cycles
|
|
|
|
will store zero.
|
|
|
|
.SH SOURCE
|
|
|
|
.B /sys/src/libc/9sys
|
|
|
|
.br
|
|
|
|
.B /sys/src/libc/*/cycles.[cs]
|
|
|
|
.SH SEE ALSO
|
|
|
|
.IR exec (2),
|
|
|
|
.IR cons (3)
|
|
|
|
.SH BUGS
|
|
|
|
Only
|
|
|
|
.B 386
|
|
|
|
processors starting with the Pentium have timestamp counters;
|
|
|
|
calling
|
|
|
|
.I cycles
|
|
|
|
on earlier processors may execute an illegal instruction.
|