IPB
>  Man Pages > Unix > Solaris 10 11/06 > Section 2 > setrctl man page

setrctl man page

Section 2 - Solaris 10 11/06 Man Pages

Other operating system man pages available here


Advanced Search

Hopefully, this page is exactly what you are looking for, but if not, you can always find further assistance on Unix/Linux Forum!





System Calls                                           setrctl(2)



NAME
     setrctl, getrctl - set or get resource control values

SYNOPSIS
     #include <rctl.h>

     int setrctl(const  char  *controlname,  rctlblk_t  *old_blk,
     rctlblk_t *new_blk, uint_t flags);

     int getrctl(const  char  *controlname,  rctlblk_t  *old_blk,
     rctlblk_t *new_blk, uint_t flags);

DESCRIPTION
     The setrctl() and getrctl() functions provide interfaces for
     the  modification  and  retrieval of resource control (rctl)
     values on active entities on the system, such as  processes,
     tasks,  or projects.  All resource controls are unsigned 64-
     bit integers; however, a collection  of  flags  are  defined
     that modify which rctl value is to be set or retrieved.

     Resource controls are restricted to three levels: basic con-
     trols  that can be modified by the owner of the calling pro-
     cess, privileged controls  that  can  be  modified  only  by
     privileged  callers,  and system controls that are fixed for
     the duration of the operating system instance.   Setting  or
     retrieving  each  of  these controls is performed by setting
     the  privilege  field  of  the  resource  control  block  to
     RCTL_BASIC,    RCTL_PRIVILEGED,    or    RCTL_SYSTEM    with
     rctlblk_set_privilege() (see rctlblk_set_value(3C)).

     For limits on collective entities such as the task  or  pro-
     ject,  the  process  ID of the calling process is associated
     with the resource control value. This  ID  is  available  by
     using            rctlblk_get_recipient_pid()            (see
     rctlblk_set_value(3C)). These values  are  visible  only  to
     that process and privileged processes within the collective.

     The getrctl() function provides a  mechanism  for  iterating
     through all of the established values on a resource control.
     The iteration is primed by calling  getrctl()  with  old_blk
     set  to  NULL,  a  valid  resource  control block pointer in
     new_blk, and specifying RCTL_FIRST in  the  flags  argument.
     Once  a  resource  control block has been obtained, repeated
     calls to getrctl() with RCTL_NEXT in the flags argument  and
     the obtained control in the old_blk argument will return the
     next resource control block in the sequence.  The  iteration
     reports the end of the sequence by failing and setting errno
     to ENOENT.

     The getrctl() function allows the calling process to get the
     current  usage  of a controlled resource using RCTL_USAGE as
     the flags value. The current value of the resource usage  is



SunOS 5.10          Last change: 31 Aug 2006                    1






System Calls                                           setrctl(2)



     placed  in  the  value  field  of the resource control block
     specified  by  new_blk.  This   value   is   obtained   with
     rctlblk_set_value(3C).  All  other  members  of the returned
     block are undefined and might be invalid.

     The setrctl() function allows the creation, modification, or
     deletion  of action-value pairs on a given resource control.
     When  passed  RCTL_INSERT  as  the  flags  value,  setrctl()
     expects  new_blk  to  contain  a  new  action-value pair for
     insertion into the  sequence.  For  RCTL_DELETE,  the  block
     indicated  by  new_blk  is  deleted  from  the sequence. For
     RCTL_REPLACE, the block  matching  old_blk  is  deleted  and
     replaced  by  the  block indicated by new_blk. When (flags &
     RCTL_USE_RECIPIENT_PID) is non-zero, setrctl() uses the pro-
     cess  ID set by rctlblk_set_recipient_pid(3C) when selecting
     the rctl value to insert, delete, or  replace  basic  rctls.
     Otherwise, the process ID of the calling process is used.

     The kernel maintains a history  of  which  resource  control
     values  have  triggered for a particular entity, retrievable
     from    a    resource     control     block     with     the
     rctlblk_get_firing_time(3C) function. The insertion or dele-
     tion of a resource control value at or below  the  currently
     enforced  value  might cause the currently enforced value to
     be reset.  In the case  of  insertion,  the  newly  inserted
     value  becomes  the  actively  enforced  value.   All higher
     values that have previously triggered will have their firing
     times  zeroed.   In  the  case  of deletion of the currently
     enforced value, the next higher value becomes  the  actively
     enforced value.

     The various resource control block properties are  described
     on the rctlblk_set_value(3C) manual page.

     Resource controls are inherited from the predecessor process
     or  task.   One  of  the  exec(2)  functions  can modify the
     resource controls of a process by resetting their histories,
     as noted above for insertion or deletion operations.

RETURN VALUES
     Upon successful  completion,  the  setrctl()  and  getrctl()
     functions  return  0. Otherwise they return -1 and set errno
     to indicate the error.

ERRORS
     The setrctl() and getrctl() functions will fail if:

     EFAULT          The controlname, old_blk, or  new_blk  argu-
                     ment points to an illegal address.






SunOS 5.10          Last change: 31 Aug 2006                    2






System Calls                                           setrctl(2)



     EINVAL          No resource control with the given  name  is
                     known to the system, or the resource control
                     block contains properties that are not valid
                     for the resource control specified.

                     RCTL_USE_RECIPIENT_PID was  used  to  set  a
                     process scope rctl and the process ID set by
                     rctlblk_set_recipient_pid(3C) does not match
                     the process ID of calling process.



     ENOENT          No value beyond the given  resource  control
                     block exists.

                     RCTL_USE_RECIPIENT_PID was used and the pro-
                     cess ID set by rctlblk_set_recipient_pid(3C)
                     does not exist within the current task, pro-
                     ject,  or  zone,  depending  on the resource
                     control name.



     ESRCH           No value matching the given resource control
                     block   was  found  for  any  of  RCTL_NEXT,
                     RCTL_DELETE, or RCTL_REPLACE.



     ENOTSUPP        The resource control requested by RCTL_USAGE
                     does not support the usage operation.



     The setrctl() function will fail if:

     EACCES          The rctl value specified cannot  be  changed
                     by  the  current process, including the case
                     where the  recipient  process  ID  does  not
                     match  the  calling  process and the calling
                     process is unprivileged.



     EPERM           An  attempt  to  set  a  system  limit   was
                     attempted.



EXAMPLES
     Example 1: Retrieve a rctl value.




SunOS 5.10          Last change: 31 Aug 2006                    3






System Calls                                           setrctl(2)



     Obtain the lowest enforced rctl value on the  rctl  limiting
     the number of LWPs in a task.

     #include <sys/types.h>
     #include <rctl.h>
     #include <stdio.h>

     uint64_t value;
     int cur_signal;
     rctlblk_t *rblk;

     ...

     if ((rblk = (rctlblk_t *)malloc(rctlblk_size())) == NULL) {
             (void) fprintf(stderr, "malloc failed: %s\n",
                 strerror(errno));
             exit(1);
     }

     if (getrctl("task.max-lwps", NULL, rblk, RCTL_FIRST) == -1)
             (void) fprintf(stderr, "failed to get rctl: %s\n",
                 strerror(errno));
     else
             (void) printf("task.max-lwps = %llu",
                 rctlblk_get_value(rblk));


USAGE
     Resource  control  blocks  are  matched  on  the  value  and
     privilege  fields.   Resource  control operations act on the
     first matching resource control  block.  Duplicate  resource
     control  blocks  are not permitted. Multiple blocks of equal
     value and privilege need to be entirely  deleted  and  rein-
     serted,  rather  than replaced, to have the correct outcome.
     Resource control blocks are sorted such that all blocks with
     the  same  value  that lack the RCTL_LOCAL_DENY flag precede
     those having that flag set.

     Only one RCPRIV_BASIC resource control  value  is  permitted
     per process per control.  Insertion of an RCPRIV_BASIC value
     will cause any existing RCPRIV_BASIC  value  owned  by  that
     process on the control to be deleted.

     The resource control facility provides the backend implemen-
     tation       for      both      setrctl()/getrctl()      and
     setrlimit()/getrlimit(). The facility  behaves  consistently
     when  either  of  these interfaces is used exclusively; when
     using both interfaces, the caller must be aware of the  ord-
     ering  issues  above,  as  well  as  the limit equivalencies
     described in the following paragraph.





SunOS 5.10          Last change: 31 Aug 2006                    4






System Calls                                           setrctl(2)



     The  hard  and  soft  process  limits  made  available  with
     setrlimit()  and getrlimit() are mapped to the resource con-
     trols implementation.  (New process resource  controls  will
     not  be  made available with the rlimit interface.)  Because
     of the RCTL_INSERT and RCTL_DELETE operations, it is  possi-
     ble that the set of values defined on a resource control has
     more or fewer than the two values defined for an rlimit.  In
     this  case,  the  soft limit is the lowest priority resource
     control value with the RCTL_LOCAL_DENY  flag  set,  and  the
     hard  limit  is  the  resource control value with the lowest
     priority equal to or exceeding  RCPRIV_PRIVILEGED  with  the
     RCTL_LOCAL_DENY  flag  set.   If  no identifiable soft limit
     exists on the resource control and setrlimit() is called,  a
     new  resource  control value is created.  If a resource con-
     trol does not have the global RCTL_GLOBAL_LOWERABLE property
     set,  its hard limit will not allow lowering by unprivileged
     callers.

ATTRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | MT-Level                    | Async-Signal-Safe           |
    |_____________________________|_____________________________|


SEE ALSO
     rctladm(1M), getrlimit(2), errno(3C), rctlblk_set_value(3C),
     attributes(5), resource_controls(5)























SunOS 5.10          Last change: 31 Aug 2006                    5





Man(1) output converted with man2html and wrapped by fishsponge

This page was generated on Wed Sep 12 11:27:08 GMT 2007

Your favourite pages:

No pages logged yet...

Top 10 most popular pages:

prstat man page (24546 hits)
(Solaris 10 11_06)

netcat man page (17695 hits)
(Suse Linux 10.1)

ssh-socks5-proxy-connect man page (13531 hits)
(Solaris 10 11_06)

signal man page (12551 hits)
(Suse Linux 10.1)

startproc man page (11991 hits)
(Suse Linux 10.1)

raidctl man page (11357 hits)
(Solaris 10 11_06)

adv_cap_autoneg man page (10285 hits)
(Solaris 10 11_06)

sqlite3 man page (9729 hits)
(openSUSE 10.2)

CPAN man page (8947 hits)
(Suse Linux 10.1)

BusyBox man page (7702 hits)
(Suse Linux 10.1)

Useful Links

Go Back

Visitor Statistics


Valid XHTML 1.0 Transitional     Valid CSS!

Cambridge Plus :: Pyrenees Mountain Holidays :: Electronic Circuit Design :: British Motorbike Piston Rings
Unix Man Pages / Linux Man Pages :: HiFi Forum :: SIP VoIP Phone & Provider Reviews :: UNIX/Linux Forum Archives

More info on advertising on Unix/Linux Forum