diff options
Diffstat (limited to 'man3/__ppc_get_timebase.3')
-rw-r--r-- | man3/__ppc_get_timebase.3 | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/man3/__ppc_get_timebase.3 b/man3/__ppc_get_timebase.3 new file mode 100644 index 0000000..7ec1e5a --- /dev/null +++ b/man3/__ppc_get_timebase.3 @@ -0,0 +1,99 @@ +.\" Copyright (c) 2012, IBM Corporation. +.\" +.\" SPDX-License-Identifier: Linux-man-pages-copyleft +.\" +.TH __ppc_get_timebase 3 2023-05-03 "Linux man-pages 6.05.01" +.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 LIBRARY +Standard C library +.RI ( libc ", " \-lc ) +.SH SYNOPSIS +.nf +.B #include <sys/platform/ppc.h> +.PP +.B uint64_t __ppc_get_timebase(void); +.B 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 STANDARDS +GNU. +.SH HISTORY +.TP +.BR __ppc_get_timebase () +.\" commit d9dc34cd569bcfe714fe8c708e58c028106e8b2e +glibc 2.16. +.TP +.BR __ppc_get_timebase_freq () +.\" commit 8ad11b9a9cf1de82bd7771306b42070b91417c11 +glibc 2.17. +.SH EXAMPLES +The following program will calculate the time, in microseconds, spent +between two calls to +.BR __ppc_get_timebase (). +.SS Program source +\& +.\" SRC BEGIN (__ppc_get_timebase.c) +.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\[ha]60 \- 1. + Source: POWER ISA. */ +#define MAX_TB 0xFFFFFFFFFFFFFFF +\& +int +main(void) +{ + uint64_t tb1, tb2, diff; + uint64_t freq; +\& + 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 +.\" SRC END +.SH SEE ALSO +.BR time (2), +.BR usleep (3) |