Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

__ppc_get_timebase(3) [linux man page]

__PPC_GET_TIMEBASE(3)					     Linux Programmer'sManual					     __PPC_GET_TIMEBASE(3)

NAME
__ppc_get_timebase, __ppc_get_timebase_freq - get the current value of the Time Base Register on Power architecture and its frequency. SYNOPSIS
#include <sys/platform/ppc.h> uint64_t __ppc_get_timebase(void) uint64_t __ppc_get_timebase_freq(void); DESCRIPTION
__ppc_get_timebase() reads the current value of the Time Base Register and returns its value, while __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 processors. It stores a monotonically incremented value that is updated at a system-dependent frequency that may be different from the processor frequency. RETURN VALUE
__ppc_get_timebase() returns a 64-bit unsigned integer that represents the current value of the Time Base Register. __ppc_get_timebase_freq() returns a 64-bit unsigned integer that represents the frequency at which the Time Base Register is updated. VERSIONS
GNU C Library support for __ppc_get_timebase() has been provided since version 2.16 and __ppc_get_timebase_freq() has been available since version 2.17. CONFORMING TO
Both functions are nonstandard GNU extensions. EXAMPLE
The following program will calculate the time, in microseconds, spent between two calls to __ppc_get_timebase(). Program source #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^60 - 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 ", 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 ", (double) diff * 1000000 / freq ); exit(EXIT_SUCCESS); } SEE ALSO
time(2), usleep(3) GNU C Library 2019-03-06 __PPC_GET_TIMEBASE(3)

Check Out this Related Man Page

__PPC_SET_PPR_MED(3)					     LinuxProgrammer's Manual					      __PPC_SET_PPR_MED(3)

NAME
__ppc_set_ppr_med, __ppc_set_ppr_very_low, __ppc_set_ppr_low, __ppc_set_ppr_med_low, __ppc_set_ppr_med_high - Set the Program Priority Reg- ister SYNOPSIS
#include <sys/platform/ppc.h> void __ppc_set_ppr_med(void); void __ppc_set_ppr_very_low(void); void __ppc_set_ppr_low(void); void __ppc_set_ppr_med_low(void); void __ppc_set_ppr_med_high(void); DESCRIPTION
These functions provide access to the Program Priority Register (PPR) on the Power architecture. The PPR is a 64-bit register that controls the program's priority. By adjusting the PPR value the programmer may improve system throughput by causing system resources to be used more efficiently, especially in contention situations. The available unprivileged states are cov- ered by the following functions: * __ppc_set_ppr_med() sets the Program Priority Register value to medium (default). * __ppc_set_ppr_very_low() sets the Program Priority Register value to very low. * __ppc_set_ppr_low() sets the Program Priority Register value to low. * __ppc_set_ppr_med_low() sets the Program Priority Register value to medium low. The privileged state medium high may also be set during certain time intervals by problem-state (unprivileged) programs, with the following function: * __ppc_set_ppr_med_high() sets the Program Priority to medium high. If the program priority is medium high when the time interval expires or if an attempt is made to set the priority to medium high when it is not allowed, the priority is set to medium. VERSIONS
The functions __ppc_set_ppr_med(), __ppc_set_ppr_low() and __ppc_set_ppr_med_low() are provided by glibc since version 2.18. The functions __ppc_set_ppr_very_low() and __ppc_set_ppr_med_high() first appeared in glibc in version 2.23. ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7). +---------------------------+---------------+---------+ |Interface | Attribute | Value | +---------------------------+---------------+---------+ |__ppc_set_ppr_med(), | Thread safety | MT-Safe | |__ppc_set_ppr_very_low(), | | | |__ppc_set_ppr_low(), | | | |__ppc_set_ppr_med_low(), | | | |__ppc_set_ppr_med_high() | | | +---------------------------+---------------+---------+ CONFORMING TO
These functions are nonstandard GNU extensions. NOTES
The functions __ppc_set_ppr_very_low() and __ppc_set_ppr_med_high() will be defined by <sys/platform/ppc.h> if _ARCH_PWR8 is defined. Availability of these functions can be tested using #ifdef _ARCH_PWR8. SEE ALSO
__ppc_yield(3) Power ISA, Book II - Section 3.1 (Program Priority Registers) GNU C Library 2017-09-15 __PPC_SET_PPR_MED(3)
Man Page