unixdev.net


Switch to SpeakEasy.net DSL

The Modular Manual Browser

Home Page
Manual: (SunOS-5.9)
Page:
Section:
Apropos / Subsearch:
optional field



System Calls                                           getacct(2)



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

SYNOPSIS
     #include <sys/exacct.h>

     size_t getacct(idtype_t idtype, id_t id, void  *buf,  size_t
     bufsize);

     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);

DESCRIPTION
     These functions provide access to  the  extended  accounting
     facility.

     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,
     libexacct(3LIB).

     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.




SunOS 5.9           Last change: 27 Nov 2001                    1






System Calls                                           getacct(2)



RETURN VALUES
     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
     error.

     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.

ERRORS
     The getacct(), putacct(), and wracct() functions  will  fail
     if:

     EINVAL
           The idtype argument was not P_TASKID or P_PID.

     ENOSPC
           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.

     ENOTACTIVE
           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:

     EINVAL
           The  flags  argument   is   neither   EW_PARTIAL   nor
           EW_INTERVAL.

USAGE
     When a UFS file system is mounted with logging enabled, file
     system  transactions  that  free blocks from files might not



SunOS 5.9           Last change: 27 Nov 2001                    2






System Calls                                           getacct(2)



     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
     mount_ufs(1M).

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

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


SEE ALSO
     mount_ufs(1M),   ea_pack_object(3EXACCT),   libexacct(3LIB),
     attributes(5)




























SunOS 5.9           Last change: 27 Nov 2001                    3