MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


File Formats                                          contract(4)



NAME
     contract - the contract file system

SYNOPSIS
     /system/contract


DESCRIPTION
     The /system/contract file system acts as the primary  inter-
     face  to  the contract subsystem. There is a subdirectory of
     /system/contract for each available contract type.


     /system/contract can be mounted on any mount point, in addi-
     tion  to  the standard /system/contract mount point, and can
     be mounted several places at once.  Such  additional  mounts
     are  allowed  in  order  to  facilitate  the  confinement of
     processes to subtrees of the file  system  using  chroot(1M)
     and  yet  allow  such  processes to continue to use contract
     commands and interfaces.


     A  combination  of  standard  system  calls  (for   example,
     open(2),    close(2),    and    poll(2))    and   calls   to
     libcontract(3LIB) access /system/contract files.


     Consumers of the contract file system  must  be  large  file
     aware. See largefile(5) and lfcompile64(5).

  DIRECTORY STRUCTURE
     At the top level, the  /system/contract  directory  contains
     subdirectories  named with each available contract type, and
     one special directory, all. Each  of  these  directories  is
     world-readable and world-searchable.

  STRUCTURE OF /system/contract/type
     Each /system/contract/type directory contains a fixed number
     of  files.  It  also contains a variable number of subdirec-
     tories corresponding to existing contracts of type type  and
     named with the decimal representation of the contracts' IDs.


     The following files are in  a  /system/contract/type  direc-
     tory:

     template    Opening this file returns a file descriptor  for
                 a new type contract template.

                 You  can  use  the  following  libcontract(3LIB)
                 calls on a template file descriptor:




SunOS 5.11          Last change: 11 Jul 2005                    1






File Formats                                          contract(4)



                   >

                    cttmplactivate(3contract)
                    cttmplclear(3contract)
                    cttmplcreate(3contract)


                 See TERMS for additional template functions.


     latest      Opening this file returns a file descriptor  for
                 the  status file of the last type contract writ-
                 ten  by  the  opening  LWP.  See  STRUCTURE   OF
                 /system/contract/type/id. If the opening LWP has
                 not created  a  type  contract,  opening  latest
                 fails with ESRCH.


     bundle      Opening this file returns a file descriptor  for
                 an event endpoint which receives events from all
                 type contracts on the system. No privileges  are
                 required  to  open a type bundle event endpoint.
                 Events sent by contracts owned  and  written  by
                 users  other than the reader's effective user id
                 are  invisible,  that  is,  they  are   silently
                 skipped,      unless      the     reader     has
                 {PRIVCONTRACTOBSERVER} in its  effective  set.
                 See EVENTS.


     pbundle     Opening this file returns a file descriptor  for
                 an event endpoint which receives events from all
                 type contracts held by the opening process.  See
                 EVENTS.


  STRUCTURE OF /system/contract/all
     The /system/contract/all directory  contains  a  numerically
     named  file  for each contract in the system. Each file is a
     symbolic link to the type-specific directory for  that  con-
     tract,    that    is   /system/contract/all/id   points   to
     /system/contract/type/id.

  STRUCTURE OF /system/contract/type/id
     Each /system/contract/type/id directory contains the follow-
     ing files:

     ctl       Opening this file returns a  file  descriptor  for
               contract  id's control file. The open fails if the
               opening process does not hold contract id and  the
               contract  has  not  been  inherited by the process
               contract of which the opening process is a member.



SunOS 5.11          Last change: 11 Jul 2005                    2






File Formats                                          contract(4)



               See process(4).

               The following libcontract(3LIB) calls can be  made
               on  a ctl file descriptor if the contract is owned
               by the caller:

                 ctctlabandon(3contract)
                 ctctlnewct(3contract)
                 ctctlack(3contract)
                 ctctlqack(3contract)


               The following libcontract(3LIB) call can  be  made
               on  a  ctl file descriptor if the contract doesn't
               have an owner:

                 ctctladopt(3contract)




     status    Opening this file returns a  file  descriptor  for
               contract   id's   status   file.   The   following
               libcontract(3LIB) calls can be made  on  a  status
               file descriptor:

               ctstatusread(3contract)

                See STATUS.


     events    Opening this file returns a file descriptor for an
               event endpoint which receives events from contract
               id. See EVENTS.

               Only a process which has the same  effective  user
               ID  as  the  process owning the contract, the same
               effective user ID as the contract's author, or has
               {PRIVCONTRACTOBSERVER}  in its effective set can
               open the event endpoint for a contract.


  TERMS
     The following terms are defined for all contracts:

     cookie                   Specifies a  64-bit  quantity  that
                              the  contract  author  can  use  to
                              identify    the    contract.    Use
                              cttmplsetcookie(3CONTRACT)    to
                              set this term.





SunOS 5.11          Last change: 11 Jul 2005                    3






File Formats                                          contract(4)



     informative event set    Selects which events are  delivered
                              as    informative    events.    Use
                              cttmplsetinformative(3CONTRACT)
                              to set this term.


     critical event set       Selects which events are  delivered
                              as     critical     events.     Use
                              cttmplsetcritical(3CONTRACT)  to
                              set this term.


  STATUS
     A status object returned by  ctstatusread(3CONTRACT)  con-
     tains the following pieces of information:

     contract ID

         The    numeric    ID    of     the     contract.     Use
         ctstatusgetid(3CONTRACT) to obtain this information.


     contract type

         The type of the contract, specifed as a string. Obtained
         using  ctstatusgettype(3CONTRACT).  The contract type
         is   the   same   as   its   subdirectory   name   under
         /system/contract.


     creator's zone ID

         The zone ID of the process which created  the  contract.
         Obtained using ctstatusgetzoneid(3CONTRACT).


     ownership state

         The state  of  the  contract,  specified  as  CTSOWNED,
         CTSINHERITED,     CTSORPHAN,    or    CTSDEAD.    Use
         ctstatusgetstate(3CONTRACT) to obtain  this  informa-
         tion.


     contract holder

         If the contract's state is CTSOWNED, the ID of the pro-
         cess which owns the contract. If the contract's state is
         CTSINHERITED, the ID of the contract which is acting as
         regent.   If  the  contract's  state  is  CTSORPHAN  or
         CTSDEAD,       this       is       undefined.       Use
         ctstatusgetholder(3CONTRACT)     to    obtain    this



SunOS 5.11          Last change: 11 Jul 2005                    4






File Formats                                          contract(4)



         information.


     number of critical events

         The number of unacknowledged critical events pending  on
         the        contract's       event       queue.       Use
         ctstatusgetnevents(3CONTRACT) to obtain this informa-
         tion.


     negotiation time

         The time remaining before the current synchronous  nego-
         tiation times out. Use ctstatusgetntime(3CONTRACT) to
         obtain this information.


     negotiation quantum time

         The time remaining before the current negotiation  quan-
         tum  runs  out.  Use  ctstatusgetqtime(3CONTRACT)  to
         obtain this information.


     negotiation event ID

         The ID of the  event  which  initiated  the  negotiation
         timeout.  Use  ctstatusgetnevid(3CONTRACT)  to obtain
         this information.


     cookie (term)

         The       contract's       cookie       term.        Use
         ctstatusgetcookie(3CONTRACT)  to obtain this informa-
         tion.


     Informative event set (term)

         The    contract's    informative    event    set.    Use
         ctstatusgetinformative(3CONTRACT)   to   obtain  this
         information.


     Critical event set (term)

         The    contract's    critical     event     set.     Use
         ctstatusgetcritical(3CONTRACT)  to obtain this infor-
         mation.




SunOS 5.11          Last change: 11 Jul 2005                    5






File Formats                                          contract(4)



  EVENTS
     All  three  event  endpoints,  /system/contract/type/bundle,
     /system/contract/type/pbundle,                           and
     /system/contract/type/id/events, are accessed  in  the  same
     manner.


     The following libcontract(3LIB) interfaces are used with  an
     event endpoint file descriptor:

       cteventread(3contract)
       cteventreadcritical(3contract)
       cteventreset(3contract)
       cteventnext(3contract)




     To facilitate processes watching multiple  event  endpoints,
     it  is  possible  to  poll(2) on event endpoints. When it is
     possible to receive on an endpoint file  descriptor,  POLIN
     is set for that descriptor.


     An event object returned  by  cteventread(3CONTRACT)  con-
     tains the following information:

     contract ID                 The ID of the contract that gen-
                                 erated     the     event.    Use
                                 cteventread(3CONTRACT)      to
                                 obtain this information.


     event ID                    The ID of the contract event.Use
                                 cteventgetevid(3CONTRACT).


     flags                       A bit vector possibly  including
                                 CTACK    and    CTEINFO.   Use
                                 cteventgetflags(3CONTRACT) to
                                 obtain this information.


     event type                  The type of event, equal to  one
                                 of  the  constants  specified in
                                 the contract type's manual  page
                                 or       CTEVNEGEND.       Use
                                 cteventgettype(3CONTRACT)  to
                                 obtain this information.






SunOS 5.11          Last change: 11 Jul 2005                    6






File Formats                                          contract(4)



  EVENT TYPES
     The following event types are defined:

     CTEVNEGEND    Some time after an exit negotiation is  ini-
                     tiated, the CTEVNEGEND event is sent. This
                     indicates that the negotiation  ended.  This
                     might  be  because  the  operation  was can-
                     celled, or because the  operation  was  suc-
                     cessful.   If   successful,  and  the  owner
                     requested that a new  contract  be  written,
                     this contains the ID of that contract.

                     CTEVNEGEND  cannot  be   included   in   a
                     contract's  informative  or  critical  event
                     set. It is always delivered and always crit-
                     ical.  If  CTEVNEGEND  indicates  that the
                     operation was successful, no further  events
                     are  sent.  The  contract's owner should use
                     ctctlabandon(3CONTRACT)  to  abandon   the
                     contract.

                     A CTEVNEGEND event contains:

                     negotiation ID     The ID of the negotiation
                                        which      ended.     Use
                                        cteventgetnevid(3CONTRACT)
                                        to  obain  this  informa-
                                        tion.


                     new contract ID    The  ID  of   the   newly
                                        created   contract.  This
                                        value is 0 if no contract
                                        was created, or the ID of
                                        the existing contract  if
                                        the   operation  was  not
                                        completed.            Use
                                        cteventgetnewct(3CONTRACT)
                                        to obtain  this  informa-
                                        tion.



FILES
     /system/contract

         List of all contract types


     /system/contract/all

         Directory of all contract IDs



SunOS 5.11          Last change: 11 Jul 2005                    7






File Formats                                          contract(4)



     /system/contract/all/id

         Symbolic link to the type-specific directory of contract
         id


     /system/contract/type

         Specific type directory


     /system/contract/type/templete

         Template for the contract type


     /system/contract/type/bundle

         Listening point for all contracts of that type


     /system/contract/type/pbundle

         Listening point for all contracts of that type  for  the
         opening process


     /system/contract/type /latest

         Status of most recent type contract created by the open-
         ing LWP


     /system/contract/type/ID

         Directory for contract id


     /system/contract/type/ID/events

         Listening point for contract id's events


     /system/contract/type/ID/ctl

         Control file for contract ID


     /system/contract/type/ID/status

         Status info for contract ID




SunOS 5.11          Last change: 11 Jul 2005                    8






File Formats                                          contract(4)



SEE ALSO
     ctrun(1),  ctstat(1),  ctwatch(1),   chroot(1M),   close(2),
     ioctl(2),   open(2),   poll(2),   ctctlabandon(3CONTRACT),
     cteventread(3CONTRACT),      cteventgetevid(3CONTRACT),
     cteventgetflags(3CONTRACT),
     cteventgetnevid(3CONTRACT),
     cteventgetnewct(3CONTRACT), cteventgettype(3CONTRACT),
     ctstatusread(3CONTRACT)ctstatusgetcookie(3CONTRACT),
     ctstatusgetcritical(3CONTRACT),
     ctstatusgetholder(3CONTRACT),
     ctstatusgetid(3CONTRACT),
     ctstatusgetinformative(3CONTRACT),
     ctstatusgetnevid(3CONTRACT),
     ctstatusgetnevents(3CONTRACT),
     ctstatusgetntime(3CONTRACT),
     ctstatusgetqtime(3CONTRACT),
     ctstatusgetstate(3CONTRACT),
     ctstatusgettype(3CONTRACT),
     cttmplsetcookie(3CONTRACT),
     cttmplsetcritical(3CONTRACT),
     cttmplsetinformative(3CONTRACT),  libcontract(3LIB), pro-
     cess(4), largefile(5), lfcompile(5), privileges(5)

































SunOS 5.11          Last change: 11 Jul 2005                    9



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™