getacct, putacct, wracct  -  get,  put,  or  write  extended
     accounting data


     #include <sys/exacct.h>

     size_t getacct(idtype_t idtype, id_t id, void  *buf,  size_t

     int putacct(idtype_t idtype, id_t id, void *buf, size_t buf-
     size, int flags);

     int wracct(idtype_t idtype, id_t id, int flags);


     These functions provide access to  the  extended  accounting

     The getacct() function returns extended  accounting  buffers
     from the kernel for currently executing tasks and processes.
     The resulting data buffer is a packed exacct object that can
     be      unpacked      using      ea_unpack_object()     (see
     ea_pack_object(3EXACCT)) and subsequently manipulated  using
     the   functions   of   the   extended   accounting  library,

     The putacct() function  provides  privileged  processes  the
     ability  to  tag  accounting  records  with  additional data
     specific to that process.  For instance, a queueing facility
     might  want to record to which queue a given task or process
     was submitted prior to running. The  flags  argument  deter-
     mines  whether  the contents of buf should be treated as raw
     data  (EP_RAW)  or   as   an   embedded   exacct   structure
     (EP_EXACCT_OBJECT).  In  the  case  of EP_EXACCT_OBJECT, buf
     must  be   a   packed   exacct   object   as   returned   by
     ea_pack_object(3EXACCT). The use of an inappropriate flag or
     the inclusion of corrupt exacct data will likely corrupt the
     enclosing exacct file.

     The wracct() function requests the kernel  to  write,  given
     its  internal  state of resource usage, the appropriate data
     for the specified task or process. The  flags  field  deter-
     mines  whether  a  partial  (EW_PARTIAL)  or interval record
     (EW_INTERVAL) is written.

     These  functions  require  root  privilege,  as  they  allow
     inquiry  or reporting relevant to system tasks and processes
     other than the invoking process. The putacct() and  wracct()
     functions  also  cause  the  kernel  to write records to the
     system's extended accounting files.


     The getacct() function returns the number of bytes  required
     to   represent   the  extended  accounting  record  for  the
     requested system task or process.  If  bufsize  exceeds  the
     returned  size,  buf  will contain a valid accounting record
     buffer.  If bufsize is less than the return value, buf  will
     contain the first bufsize bytes of the record. If bufsize is
     0, getacct() returns only the number of  bytes  required  to
     represent  the  extended  accounting record. In the event of
     failure, -1 is returned and errno is  set  to  indicate  the

     The putacct() and wracct() functions return 0 if the  record
     was  successfully  written.  Otherwise,  -1  is returned and
     errno is set to indicate the error.


     The getacct(), putacct(), and wracct() functions  will  fail

           The idtype argument was not P_TASKID or P_PID.

           The file system  containing  the  extended  accounting
           file is full.  The wracct() or putacct() function will
           fail if the record size would  exceed  the  amount  of
           space remaining on the file system.

           The extended accounting  facility  for  the  requested
           idtype_t is not active.  Either putacct() attempted to
           write a task record when the task accounting file  was
           unset,  or  getacct() attempted to retrieve accounting
           data for a process when  extended  process  accounting
           was inactive.

     EPERM The invoking process lacks  sufficient  permission  to
           perform the request operation.

     ERSCH The id argument does not refer to a  presently  active
           system task ID or process ID.

     The putacct() and wracct() functions will fail if:

           The  flags  argument   is   neither   EW_PARTIAL   nor


     When a UFS file system is mounted with logging enabled, file
     system  transactions  that  free blocks from files might not
     actually add those freed blocks to the  file  system's  free
     list  until  some  unspecified  time  in  the  future.  This
     behavior improves file system performance but does not  con-
     form  to the POSIX, Single UNIX Specification, SPARC Confor-
     mance Definition, System  V  Application  Binary  Interface,
     System  V Interface Definition, and X/Open Portability Guide
     Standards, which  require  that  freed  space  be  available
     immediately.  To enable standards conformance regarding file
     deletions or to address the problem of  not  being  able  to
     grow  files  on a relatively full UFS file system even after
     files  have  been  deleted,   disable   UFS   logging   (see


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

    | ATTRIBUTE  TYPE             | ATTRIBUTE                   |ALUE
    | MT-Level                    | Async-Signal-Safe           |


     mount_ufs(1M),   ea_pack_object(3EXACCT),   libexacct(3LIB),

Man(1) output converted with man2html