| .\" Copyright (c) 2015, 2016 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_SET_PPR_MED 3 2021-03-22 "GNU C Library" "Linux\ |
| Programmer's Manual" |
| .SH 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 Register |
| .SH SYNOPSIS |
| .nf |
| .B #include <sys/platform/ppc.h> |
| .PP |
| .B void __ppc_set_ppr_med(void); |
| .B void __ppc_set_ppr_very_low(void); |
| .B void __ppc_set_ppr_low(void); |
| .B void __ppc_set_ppr_med_low(void); |
| .B void __ppc_set_ppr_med_high(void); |
| .fi |
| .SH DESCRIPTION |
| These functions provide access to the |
| .I Program Priority Register |
| (PPR) on the Power architecture. |
| .PP |
| 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 covered by the following functions: |
| .IP * 3 |
| .BR __ppc_set_ppr_med () |
| sets the Program Priority Register value to |
| .IR medium |
| (default). |
| .IP * |
| .BR __ppc_set_ppr_very_low () |
| sets the Program Priority Register value to |
| .IR "very low" . |
| .IP * |
| .BR __ppc_set_ppr_low () |
| sets the Program Priority Register value to |
| .IR low . |
| .IP * |
| .BR __ppc_set_ppr_med_low () |
| sets the Program Priority Register value to |
| .IR "medium low" . |
| .PP |
| The privileged state |
| .IR "medium high" |
| may also be set during certain time intervals by problem-state (unprivileged) |
| programs, with the following function: |
| .IP * 3 |
| .BR __ppc_set_ppr_med_high () |
| sets the Program Priority to |
| .IR "medium high" . |
| .PP |
| 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. |
| .SH VERSIONS |
| The functions |
| .BR __ppc_set_ppr_med (), |
| .BR __ppc_set_ppr_low (), |
| and |
| .BR __ppc_set_ppr_med_low () |
| are provided by glibc since version 2.18. |
| The functions |
| .BR __ppc_set_ppr_very_low () |
| and |
| .BR __ppc_set_ppr_med_high () |
| first appeared in glibc in version 2.23. |
| .SH ATTRIBUTES |
| For an explanation of the terms used in this section, see |
| .BR attributes (7). |
| .ad l |
| .nh |
| .TS |
| allbox; |
| lbx lb lb |
| l l l. |
| Interface Attribute Value |
| T{ |
| .BR __ppc_set_ppr_med (), |
| .BR __ppc_set_ppr_very_low (), |
| .BR __ppc_set_ppr_low (), |
| .BR __ppc_set_ppr_med_low (), |
| .BR __ppc_set_ppr_med_high () |
| T} Thread safety MT-Safe |
| .TE |
| .hy |
| .ad |
| .sp 1 |
| .SH CONFORMING TO |
| These functions are nonstandard GNU extensions. |
| .SH NOTES |
| The functions |
| .BR __ppc_set_ppr_very_low () |
| and |
| .BR __ppc_set_ppr_med_high () |
| will be defined by |
| .I <sys/platform/ppc.h> |
| if |
| .B _ARCH_PWR8 |
| is defined. |
| Availability of these functions can be tested using |
| .BR "#ifdef _ARCH_PWR8" . |
| .SH SEE ALSO |
| .BR __ppc_yield (3) |
| .PP |
| .IR "Power ISA, Book\ II - Section\ 3.1 (Program Priority Registers)" |