Get or set a power parameter
Synopsis:
#include <neutrino.h>
int PowerParameter(unsigned __id,
unsigned __struct_len,
const struct nto_power_parameter *__new,
struct nto_power_parameter *__old);
Arguments:
- id
- If the id argument is zero, the
kernel will return a new number that can be used as an ID to refer to the
power parameter in the future.
If the id argument is non-zero, the kernel
will replace the existing parameter identified by id
with new information. In this case, if _NTO_PP_ID_NEXT is ORed into the value, the
kernel will return the information for the next parameter with a higher
ID than the value specified for id.
Note: If id is ORed with _NTO_PP_ID_NEXT,
new must be set to
NULL.
- struct_len
- The length of the nto_power_parameter data structure, in
bytes.
- new
- A pointer to an nto_power_parameter structure with the new
power characteristics to apply.
- If new is NULL, don't set new power
characteristics.
- old
- A pointer to an nto_power_parameter structure with the old
power characteristics.
- If old is non-NULL, return the previous
power parameter for the parameter specified by id.
Library:
libc
Use the -l c option to qcc to link against this library. This library is
usually included automatically.
Description:
The PowerParameter() function either gets or sets power
characteristics, based on the values set for id,
new, and old, as follows:
- If id is zero,
PowerParameter() returns a new power parameter ID.
- If id is non-zero,
PowerParameter() replaces the power parameter with the ID
specified by id with the values in the
nto_power_parameter structure referenced by
new; in this case the new argument
must be non-NULL.
- If id is non-zero and its value is ORed with
_NTO_PP_ID_NEXT, the kernel will return the information for
the next power parameter with an ID higher than the value specified in
id; in this case, the new argument
must be set to NULL.
- If new is NULL, don't set the power
characteristics.
- If new is non-NULL, set the power parameters
to the values in the nto_power_parameter data structure
referenced by new. The characteristics PowerParameter()
sets depend on the value in this data structure's parameter_type member.
- If old is non-NULL, get the power parameters
for the power characterisitic specified by id.
Enumerated values and constants
The PowerParameter() function makes use of the
_NTO_PP_ID_NEXT value defined in the
neutrino.h header file:
- _NTO_PP_ID_NEXT
#define _NTO_PP_ID_NEXT 0x80000000u
OR the value for the id parameter with
_NTO_PP_ID_NEXT to have the kernel return the powere
parameter with the next higher ID value.
Example
The code sample below creates a CPU cluster, adds all the CPUs to that cluster, and
adds all the CPUs on the board to that cluster, specifying power-management
characteristics for them:
parm.parameter_type = _NTO_PPT_DEFINE_CLUSTER;
parm.clusterid = -1;
parm.u.cluster.frequency_mask = 0;
cluster = PowerParameter(0, sizeof(parm), &parm, NULL);
printf("PowerParm (cluster) got %d, %d\n", cluster, errno);
for(i = 0; i < _syspage_ptr->num_cpu; ++i) {
parm.parameter_type = _NTO_PPT_DEFINE_CPU;
parm.clusterid = cluster;
parm.u.cpu.cpuid = i;
parm.u.cpu.unloaded = 75;
parm.u.cpu.loaded.nonburst = 97;
parm.u.cpu.loaded.burst = 20;
pp[0] = PowerParameter(0, sizeof(parm), &parm, NULL);
printf("PowerParm (cpu%d) got %d, %d\n", i, pp[0], errno);
}
Returns:
- >0
- Success. The call returns the power characteristic ID.
If id was non-zero, the
returned ID will be the same as the passed-in argument.
If id was zero, the call returns a new ID
that can then be used to refer to the power parameter.
- -1
- An error occurred (errno is set).
Classification:
QNX Neutrino
Safety: |
|
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
No |
Thread |
No |