p_online(2)
NAME
p_online - return or change processor operational status
SYNOPSIS
#include <sys/types.h>
#include <sys/processor.h>
int p_online(processorid_t processorid, int flag);
DESCRIPTION
The p_online() function changes or returns the operational
status of processors. The state of the processor specified
by the processorid argument is changed to the state
represented by the flag argument.
Legal values for flag are P_STATUS, P_ONLINE, P_OFFLINE, and
P_NOINTR.
When flag is P_STATUS, no processor status change occurs,
but the current processor status is returned.
The P_ONLINE, P_OFFLINE, and P_NOINTR values for flag
refer to valid processor states. A processor in the P_ONLINE
state is allowed to process LWPs (lightweight processes) and
perform system activities. The processor is also interrupti-
ble by I/O devices attached to the system.
A processor in the P_OFFLINE state is not allowed to process
LWPs. The processor is as inactive as possible. If the
hardware supports such a feature, the processor is not
interruptible by attached I/O devices.
A processor in the P_NOINTR state is allowed to process
LWPs, but it is not interruptible by attached I/O devices.
Typically, interrupts, when they occur are routed to other
processors in the system. Not all systems support putting a
processor into the P_NOINTR state. It is not permitted to
put all the processors of a system into the P_NOINTR state.
At least one processor must always be available to service
system clock interrupts.
Processor numbers are integers, greater than or equal to 0,
and are defined by the hardware platform. Processor numbers
are not necessarily contiguous, but "not too sparse." Pro-
cessor numbers should always be printed in decimal.
The maximum possible processorid value can be determined by
calling sysconf(_SC_CPUID_MAX). The list of valid processor
numbers can be determined by calling p_online() with proces-
sorid values from 0 to the maximum returned by
sysconf(_SC_CPUID_MAX). The EINVAL error is returned for
invalid processor numbers. See EXAMPLES below.
RETURN VALUES
On successful completion, the value returned is the previous
state of the processor, P_ONLINE, P_OFFLINE, P_NOINTR, or
P_POWEROFF. Otherwise, -1 is returned and errno is set to
indicate the error.
ERRORS
The p_online() function will fail if:
EPERM The effective user of the calling process is not
super-user.
EINVAL
A non-existent processor ID was specified or flag was
invalid.
EBUSY The flag was P_OFFLINE and the specified processor is
the only on-line processor, there are currently LWPs
bound to the processor, or the processor performs some
essential function that cannot be performed by another
processor.
EBUSY The flag was P_NOINTR and the specified processor is
the only interruptible processor in the system, or it
handles interrupts that cannot be handled by another
processor.
EBUSY The specified processor is powered off and cannot be
powered on because some platform- specific resource is
not available.
ENOTSUP
The specified processor is powered off, and the plat-
form does not support power on of individual proces-
sors.
EXAMPLES
Example 1: List the legal processor numbers.
The following code sample will list the legal processor
numbers:
#include <sys/unistd.h>
#include <sys/processor.h>
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
int
main()
{
processorid_t i, cpuid_max;
cpuid_max = sysconf(_SC_CPUID_MAX);
for (i = 0; i <= cpuid_max; i++) {
if (p_online(i, P_STATUS) != -1)
printf("processor %d present\n", i);
}
return (0);
}
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| MT-Level | MT-Safe |
|_____________________________|_____________________________|
SEE ALSO
psradm(1M), psrinfo(1M), processor_bind(2),
processor_info(2), pset_create(2), sysconf(3C), attri-
butes(5)
Man(1) output converted with
man2html