p_online(2) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

p_online(2)

p_online(2)                      System Calls                      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, P_NOINTR,
       P_FAULTED, P_SPARE, and P_FORCED.


       When flag is P_STATUS, no processor status change occurs, but the  cur‐
       rent processor status is returned.


       The  P_ONLINE,  P_OFFLINE,  P_NOINTR, P_FAULTED, and P_SPARE values for
       flag refer to valid  processor  states.  The  P_OFFLINE,  P_SPARE,  and
       P_FAULTED processor states can be combined with the P_FORCED flag.


       A  processor  in  the P_ONLINE state is allowed to process LWPs (light‐
       weight processes) and perform system activities. The processor is  also
       interruptible 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 sys‐
       tems 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  sys‐
       tem clock interrupts.


       A  processor  in  the  P_SPARE state is not allowed to process LWPs. In
       many respects the P_SPARE state is similar to the P_OFFLINE state,  but
       describes  a processor that is available for reactivation by management
       tools without administrator intervention.


       A processor in the P_FAULTED state is not allowed to process  LWPs.  In
       many  respects  the  P_FAULTED state is similar to the P_OFFLINE state,
       but describes a processor that has been diagnosed as faulty. The privi‐
       leged  caller  can  change the state of the processor from P_FAULTED to
       any of the other states, but since the processor might  generate  addi‐
       tional  errors, electing to reactivate such a processor should be care‐
       fully considered.


       Forced processor state transition can be requested if a  new  processor
       state  is  specified  with  the  bitwise-inclusive  OR  of  the special
       P_FORCED flag. Forcing transition of  a  processor  to  the  P_OFFLINE,
       P_SPARE,  or P_FAULTED state revokes processor bindings for all threads
       that were previously bound to that  processor  with  processor_bind(2).
       There  is  no guarantee that a forced processor state transition always
       succeeds.


       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." Processor 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 processorid 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,  P_FAULTED,  P_SPARE,  or
       P_POWEROFF. Otherwise, −1 is returned, the CPU state remains unchanged,
       and errno is set to indicate the error.

ERRORS
       The p_online() function will fail if:

       EBUSY      The flag was P_OFFLINE or P_SPARE and the specified  proces‐
                  sor  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 pro‐
                  cessor.

                  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.

                  The specified processor is powered off and cannot be powered
                  on because some platform-specific resource is not available.


       EINVAL     A  non-existent  processor  ID  was  specified  or  flag was
                  invalid.

                  The caller is in a non-global zone, the  pools  facility  is
                  active,  and  the  processor  is  not a member of the zone's
                  pool's processor set.


       ENOTSUP    The specified processor is powered  off,  and  the  platform
                  does not support power on of individual processors.


       EPERM      The  flag  was  not  P_STATUS  and the {PRIV_SYS_RES_CONFIG}
                  privilege is not asserted in the effective set of the  call‐
                  ing process.


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 <unistd.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(7) for descriptions of the following attributes:


       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ MT-LevelMT-Safe


SEE ALSO
       processor_bind(2),  processor_info(2),   pset_create(2),   sysconf(3C),
       attributes(7),   privileges(7),   pooladm(8),   psradm(8),  psrinfo(8),
       zoneadm(8)



Oracle Solaris 11.4               27 Nov 2017                      p_online(2)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3