mirror of https://github.com/mkerrisk/man-pages
__ppc_get_timebase_freq.3: Document the Power-specific __ppc_get_timebase_freq(3)
Glibc 2.17 adds a function to read the frequency at which the Time Base Register of Power processors is updated. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com> Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
parent
1290b94b1c
commit
1e6e376298
|
@ -25,30 +25,84 @@
|
||||||
.TH __PPC_GET_TIMEBASE 3 2012-08-13 "GNU C Library" "Linux Programmer's\
|
.TH __PPC_GET_TIMEBASE 3 2012-08-13 "GNU C Library" "Linux Programmer's\
|
||||||
Manual"
|
Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
__ppc_get_timebase \- get the current value of the Time Base Register on
|
__ppc_get_timebase, __ppc_get_timebase_freq \- get the current value
|
||||||
Power architecture
|
of the Time Base Register on Power architecture and its frequency.
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B #include <sys/platform/ppc.h>
|
.B #include <sys/platform/ppc.h>
|
||||||
.sp
|
.sp
|
||||||
.BI "uint64_t __ppc_get_timebase(void)"
|
.BI "uint64_t __ppc_get_timebase(void)"
|
||||||
|
|
||||||
|
.BI "uint64_t __ppc_get_timebase_freq(void);"
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.BR __ppc_get_timebase ()
|
.BR __ppc_get_timebase ()
|
||||||
reads the current value of the Time Base Register and returns its value.
|
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.
|
||||||
|
|
||||||
The Time Base Register is a 64-bit register provided by Power Architecture
|
The Time Base Register is a 64-bit register provided by Power Architecture
|
||||||
processors.
|
processors.
|
||||||
It stores a monotonically incremented value that is updated at a
|
It stores a monotonically incremented value that is updated at a
|
||||||
system-dependent frequency that may be different from the processor
|
system-dependent frequency that may be different from the processor
|
||||||
frequency.
|
frequency.
|
||||||
.SH RETURN VALUE
|
.SH RETURN VALUE
|
||||||
Returns a 64-bit unsigned integer that represents the current value of the
|
.BR __ppc_get_timebase ()
|
||||||
|
returns a 64-bit unsigned integer that represents the current value of the
|
||||||
Time Base Register.
|
Time Base Register.
|
||||||
|
|
||||||
|
.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
|
.SH VERSIONS
|
||||||
GNU C Library support for
|
GNU C Library support for
|
||||||
.\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e
|
.\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e
|
||||||
.BR __ppc_get_timebase ()
|
.BR __ppc_get_timebase ()
|
||||||
has been provided since version 2.16.
|
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
|
.SH CONFORMING TO
|
||||||
This function is a nonstandard GNU extension.
|
Both functions are nonstandard GNU extensions.
|
||||||
|
.SH EXAMPLE
|
||||||
|
The following program will calculate the time, in microseconds, spent
|
||||||
|
between two calls to __ppc_get_timebase ().
|
||||||
|
.SS Program source
|
||||||
|
\&
|
||||||
|
.nf
|
||||||
|
#include <inttypes.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sys/platform/ppc.h>
|
||||||
|
|
||||||
|
/* Maximum value of the Time Base Register: 2^60 - 1. Source: POWER ISA. */
|
||||||
|
#define MAX_TB 0xFFFFFFFFFFFFFFF
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
uint64_t tb1, tb2, diff;
|
||||||
|
|
||||||
|
uint64_t freq = __ppc_get_timebase_freq ();
|
||||||
|
printf ("Time Base frequency = %"PRIu64" Hz\\n", 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\\n", (double) diff * 1000000 / freq );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
.fi
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR time (2),
|
.BR time (2),
|
||||||
.BR usleep (3)
|
.BR usleep (3)
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
.so man3/__ppc_get_timebase.3
|
Loading…
Reference in New Issue