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