mirror of https://github.com/mkerrisk/man-pages
114 lines
3.5 KiB
Groff
114 lines
3.5 KiB
Groff
.\" Copyright (c) 2012, IBM Corporation.
|
|
.\"
|
|
.\" %%%LICENSE_START(VERBATIM)
|
|
.\" Permission is granted to make and distribute verbatim copies of this
|
|
.\" manual provided the copyright notice and this permission notice are
|
|
.\" preserved on all copies.
|
|
.\"
|
|
.\" Permission is granted to copy and distribute modified versions of
|
|
.\" this manual under the conditions for verbatim copying, provided that
|
|
.\" the entire resulting derived work is distributed under the terms of
|
|
.\" a permission notice identical to this one.
|
|
.\"
|
|
.\" Since the Linux kernel and libraries are constantly changing, this
|
|
.\" manual page may be incorrect or out-of-date. The author(s) assume.
|
|
.\" no responsibility for errors or omissions, or for damages resulting.
|
|
.\" from the use of the information contained herein. The author(s) may.
|
|
.\" not have taken the same level of care in the production of this.
|
|
.\" manual, which is licensed free of charge, as they might when working.
|
|
.\" professionally.
|
|
.\"
|
|
.\" Formatted or processed versions of this manual, if unaccompanied by
|
|
.\" the source, must acknowledge the copyright and authors of this work.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH __PPC_GET_TIMEBASE 3 2021-03-22 "GNU C Library" "Linux Programmer's\
|
|
Manual"
|
|
.SH NAME
|
|
__ppc_get_timebase, __ppc_get_timebase_freq \- get the current value
|
|
of the Time Base Register on Power architecture and its frequency.
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.B #include <sys/platform/ppc.h>
|
|
.PP
|
|
.BI "uint64_t __ppc_get_timebase(void);"
|
|
.BI "uint64_t __ppc_get_timebase_freq(void);"
|
|
.fi
|
|
.SH DESCRIPTION
|
|
.BR __ppc_get_timebase ()
|
|
reads the current value of the Time Base Register and returns its
|
|
value, while
|
|
.BR __ppc_get_timebase_freq ()
|
|
returns the frequency in which the Time Base Register is updated.
|
|
.PP
|
|
The Time Base Register is a 64-bit register provided by Power Architecture
|
|
processors.
|
|
It stores a monotonically incremented value that is updated at a
|
|
system-dependent frequency that may be different from the processor
|
|
frequency.
|
|
.SH RETURN VALUE
|
|
.BR __ppc_get_timebase ()
|
|
returns a 64-bit unsigned integer that represents the current value of the
|
|
Time Base Register.
|
|
.PP
|
|
.BR __ppc_get_timebase_freq ()
|
|
returns a 64-bit unsigned integer that represents the frequency at
|
|
which the Time Base Register is updated.
|
|
.SH VERSIONS
|
|
GNU C Library support for
|
|
.\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e
|
|
.BR __ppc_get_timebase ()
|
|
has been provided since version 2.16 and
|
|
.\" commit 8ad11b9a9cf1de82bd7771306b42070b91417c11
|
|
.BR __ppc_get_timebase_freq ()
|
|
has been available since version 2.17.
|
|
.SH CONFORMING TO
|
|
Both functions are nonstandard GNU extensions.
|
|
.SH EXAMPLES
|
|
The following program will calculate the time, in microseconds, spent
|
|
between two calls to
|
|
.BR __ppc_get_timebase ().
|
|
.SS Program source
|
|
\&
|
|
.EX
|
|
#include <inttypes.h>
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/platform/ppc.h>
|
|
|
|
/* Maximum value of the Time Base Register: 2\(ha60 \- 1.
|
|
Source: POWER ISA. */
|
|
#define MAX_TB 0xFFFFFFFFFFFFFFF
|
|
|
|
int
|
|
main(void)
|
|
{
|
|
uint64_t tb1, tb2, diff;
|
|
|
|
uint64_t freq = __ppc_get_timebase_freq();
|
|
printf("Time Base frequency = %"PRIu64" Hz\en", freq);
|
|
|
|
tb1 = __ppc_get_timebase();
|
|
|
|
// Do some stuff...
|
|
|
|
tb2 = __ppc_get_timebase();
|
|
|
|
if (tb2 > tb1) {
|
|
diff = tb2 \- tb1;
|
|
} else {
|
|
/* Treat Time Base Register overflow. */
|
|
diff = (MAX_TB \- tb2) + tb1;
|
|
}
|
|
|
|
printf("Elapsed time = %1.2f usecs\en",
|
|
(double) diff * 1000000 / freq );
|
|
|
|
exit(EXIT_SUCCESS);
|
|
}
|
|
.EE
|
|
.SH SEE ALSO
|
|
.BR time (2),
|
|
.BR usleep (3)
|