MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


CPU Performance Counters Library Functions  pctxsetevents(3CPC)



NAME
     pctxsetevents - associate callbacks with process events

SYNOPSIS
     cc [ flag... ] file... -lpctx [ library... ]
     #include 

     typedef   enum {
             PCTXNULEVENT = 0,
             PCTXSYSCEXECEVENT,
             PCTXSYSCFORKEVENT,
             PCTXSYSCEXITEVENT,
             PCTXSYSCLWPCREATEVENT,
             PCTXINITLWPEVENT,
             PCTXFINILWPEVENT,
             PCTXSYSCLWPEXITEVENT
     } pctxeventt;

     typedef int pctxsyscexecfnt(pctxt *pctx, pidt pid, idt lwpid,
          char *cmd, void *arg);


     typedef void pctxsyscforkfnt(pctxt *pctx,
          pidt pid, idt lwpid, pidt child, void *arg);


     typedef void pctxsyscexitfnt(pctxt *pctx, pidt pid, idt lwpid,
          void *arg);


     typedef int pctxsysclwpcreatefnt(pctxt *pctx, pidt pid, idt lwpid,
          void *arg);


     typedef int pctxinitlwpfnt(pctxt *pctx, pidt pid, idt lwpid,
          void *arg);


     typedef int pctxfinilwpfnt(pctxt *pctx, pidt pid, idt lwpid,
          void *arg);


     typedef int pctxsysclwpexitfnt(pctxt *pctx, pidt pid, idt lwpid,
          void *arg);


     int pctxsetevents(pctxt *pctx...);


DESCRIPTION
     The pctxsetevents() function allows the caller  (the  con-
     trolling  process)  to express interest in various events in



SunOS 5.11          Last change: 13 May 2003                    1






CPU Performance Counters Library Functions  pctxsetevents(3CPC)



     the controlled process.  See pctxcapture(3CPC) for informa-
     tion  about  how  the controlling process is able to create,
     capture and manipulate the controlled process.


     The pctxsetevents() function takes a pctxt  handle,  fol-
     lowed  by  a  variable  length list of pairs of pctxeventt
     tags and  their  corresponding  handlers,  terminated  by  a
     PCTXNULEVENT tag.


     Most of the events correspond closely to various classes  of
     system  calls, though two additional pseudo-events (initlwp
     and finilwp) are provided to allow callers to perform vari-
     ous  housekeeping  tasks.  The initlwp handler is called as
     soon as the library identifies a new LWP, while finilwp  is
     called  just  before  the  LWP  disappears. Thus the classic
     "hello  world"  program  would  see  an  initlwp  event,  a
     finilwp  event  and  (process)  exit  event, in that order.
     The table below displays the interactions between the states
     of the controlled process and the handlers executed by users
     of the library.



     
     System Calls and pctx Handlers                                                  
    
              System call              Handler                 Comments              
    
              exec,execve             finilwp    Invoked serially on all lwps in the
                                                  process.                           
                                        exec      Only invoked if the  exec()  system
                                                  call succeeded.                    
                                      initlwp    If the exec succeeds, only  invoked
                                                  on   lwp  1.  If  the  exec  fails,
                                                  invoked serially on all lwps in the
                                                  process.                           
    
           fork, vfork, fork1           fork      Only invoked if the  fork()  system
                                                  call succeeded.                    
    
                  exit                finilwp    Invoked on all lwps in the process.
                                        exit          Invoked on the exiting lwp.    
    



     Each of the handlers is passed the caller's opaque handle, a
     pctxt  handle,  the  pid,  and lwpid of the process and lwp
     generating the  event.  The  lwpexit,  and  (process)  exit
     events  are  delivered  before  the  underlying system calls



SunOS 5.11          Last change: 13 May 2003                    2






CPU Performance Counters Library Functions  pctxsetevents(3CPC)



     begin, while the exec, fork, and lwpcreate events are  only
     delivered  after the relevant system calls complete success-
     fully. The exec handler is passed a  string  that  describes
     the  command  being executed. Catching the fork event causes
     the calling process to fork(2), then capture  the  child  of
     the  controlled  process using pctxcapture() before handing
     control to the fork handler.  The  process  is  released  on
     return from the handler.

RETURN VALUES
     Upon successful  completion,  pctxsetevents()  returns  0.
     Otherwise, the function returns -1.

EXAMPLES
     Example 1 HandleExec example.


     This example captures  an  existing  process  whose  process
     identifier  is pid, and arranges to call the HandleExec rou-
     tine when the process performs an exec(2).


       static void
       HandleExec(pctxt *pctx, pidt pid, idt lwpid, char *cmd, void *arg)
       {
            (void) printf("pid %d execed '%s'\n", (int)pid, cmd);
       }
       int
       main()
       {
            ...
            pctx = pctxcapture(pid, NUL, 1, NUL);
            (void) pctxsetevents(pctx,
                  PCTXSYSCEXECEVENT, HandleExec,
                  ...
                  PCTXNULEVENT);
            (void) pctxrun(pctx, 0, 0, NUL);
            pctxrelease(pctx);
       }


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











SunOS 5.11          Last change: 13 May 2003                    3






CPU Performance Counters Library Functions  pctxsetevents(3CPC)



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Interface Stability          Evolving                    
    
     MT-Level                     Unsafe                      
    


SEE ALSO
     exec(2), exit(2), fork(2),  vfork(2),  fork1(2),  cpc(3CPC),
     libpctx(3LIB), proc(4), attributes(5)











































SunOS 5.11          Last change: 13 May 2003                    4



OpenSolaris man pages main menu

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