Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ct_pr_event_get_pid(3Contract)Management Libraryct_pr_event_get_pid(3CONTRACT)

NAME
       ct_pr_event_get_pid,    ct_pr_event_get_ppid,   ct_pr_event_get_signal,
       ct_pr_event_get_sender, ct_pr_event_get_senderct, ct_pr_event_get_exit-
       status,	    ct_pr_event_get_pcorefile,	    ct_pr_event_get_gcorefile,
       ct_pr_event_get_zcorefile - process contract event functions

SYNOPSIS
       cc [ flag... ] file... -D_LARGEFILE64_SOURCE -lcontract [ library... ]
       #include	<libcontract.h>
       #include	<sys/contract/process.h>

       int ct_pr_event_get_pid(ct_evthdl_t evthdl, pid_t *pidp);

       int ct_pr_event_get_ppid(ct_evthdl_t evthdl, pid_t *pidp);

       int ct_pr_event_get_signal(ct_evthdl_t evthdl, int *signalp);

       int ct_pr_event_get_sender(ct_evthdl_t evthdl, pid_t *pidp);

       int ct_pr_event_get_senderct(ct_evthdl_t	evthdl,	ctid_t *pidp);

       int ct_pr_event_get_exitstatus(ct_evthdl_t evthdl, int *statusp);

       int ct_pr_event_get_pcorefile(ct_evthdl_t evthdl, char **namep);

       int ct_pr_event_get_gcorefile(ct_evthdl_t evthdl, char **namep);

       int ct_pr_event_get_zcorefile(ct_evthdl_t evthdl, char **namep);

DESCRIPTION
       These functions read process contract event information from  an	 event
       object  returned	 by  ct_event_read(3CONTRACT)  or ct_event_read_criti-
       cal(3CONTRACT).

       The ct_pr_event_get_pid() function reads	the process ID of the  process
       generating the event.

       The ct_pr_event_get_ppid() function reads the process ID	of the process
       that forked the new process causing the CT_PR_EV_FORK event.

       The ct_pr_event_get_signal() function reads the signal  number  of  the
       signal that caused the CT_PR_EV_SIGNAL event.

       The  ct_pr_event_get_sender()  function	reads  the  process  ID	of the
       process that sent the signal that caused	the CT_PR_EV_SIGNAL event.  If
       the signal's sender was not in the same zone as the signal's recipient,
       this information	is available only to event  consumers  in  the	global
       zone.

       The  ct_pr_event_get_senderct  function	reads  the  contract ID	of the
       process that sent the signal that caused	the CT_PR_EV_SIGNAL event.  If
       the signal's sender was not in the same zone as the signal's recipient,
       this information	is available only

       The ct_pr_event_get_exitstatus()	function reads the exit	status of  the
       process generating a CT_PR_EV_EXIT event.

       The  ct_pr_event_get_pcorefile()	function reads the name	of the process
       core file if one	was created when the CT_PR_EV_CORE  event  was	gener-
       ated.  A	 pointer to a character	array is stored	in *namep and is freed
       when ct_event_free(3CONTRACT) is	called on the event handle.

       The ct_pr_event_get_gcorefile() function	reads the name of  the	zone's
       global  core  file  if one was created when the CT_PR_EV_CORE event was
       generated. A pointer to a character array is stored in  *namep  and  is
       freed when ct_event_free() is called on the event handle.

       The  ct_pr_event_get_zcorefile()	function reads the name	of the system-
       wide core file  in  the	global	zone  if  one  was  created  when  the
       CT_PR_EV_CORE  event  was generated. This information is	available only
       to event	consumers in the global	zone. A	pointer	to a  character	 array
       is  stored in *namep and	is freed when ct_event_free() is called	on the
       event handle.

RETURN VALUES
       Upon	   successful	     completion,	ct_pr_event_get_pid(),
       ct_pr_event_get_ppid(),			     ct_pr_event_get_signal(),
       ct_pr_event_get_sender(),		   ct_pr_event_get_senderct(),
       ct_pr_event_get_exitstatus(),		  ct_pr_event_get_pcorefile(),
       ct_pr_event_get_gcorefile(), and	ct_pr_event_get_zcorefile() return  0.
       Otherwise, they return a	non-zero error value.

ERRORS
       The ct_pr_event_get_pid(), ct_pr_event_get_ppid(), ct_pr_event_get_sig-
       nal(),	   ct_pr_event_get_sender(),	   ct_pr_event_get_senderct(),
       ct_pr_event_get_exitstatus(),		  ct_pr_event_get_pcorefile(),
       ct_pr_event_get_gcorefile(), and	ct_pr_event_get_zcorefile()  functions
       will fail if:

       EINVAL	       The evthdl argument is not a process contract event ob-
		       ject.

       The	    ct_pr_event_get_ppid(),	     ct_pr_event_get_signal(),
       ct_pr_event_get_sender(),		   ct_pr_event_get_senderct(),
       ct_pr_event_get_exitstatus(),		  ct_pr_event_get_pcorefile(),
       ct_pr_event_get_gcorefile(),  and ct_pr_event_get_zcorefile() functions
       will fail if:

       EINVAL	       The requested data do not match the event type.

       The ct_pr_event_get_sender()a functions will fail if:

       ENOENT	       The process ID of the sender was	not available, or  the
		       event  object  was  read	by a process running in	a non-
		       global zone and the sender was in a different zone.

       The   ct_pr_event_get_pcorefile(),   ct_pr_event_get_gcorefile(),   and
       ct_pr_event_get_zcorefile() functions will fail if:

       ENOENT	       The requested core file was not created.

       The ct_pr_event_get_zcorefile() function	will fail if:

       ENOENT	       The  event  object  was	read by	a process running in a
		       non-global zone.

EXAMPLES
       Example 1: Print	the instigator of all CT_PR_EV_SIGNAL events.

       Open the	process	contract bundle. Loop reading events. Fetch  and  dis-
       play  the  signalled  pid  and  signalling pid for each CT_PR_EV_SIGNAL
       event encountered.

       #include	<sys/types.h>
       #include	<fcntl.h>
       #include	<stdio.h>
       #include	<libcontract.h>

       ...
       int fd;
       ct_evthdl_t event;
       pid_t pid, sender;

       fd = open("/system/contract/process/bundle", O_RDONLY);
       for (;;)	{
	       ct_event_read(fd, &event);
	       if (ct_event_get_type(event) != CT_PR_EV_SIGNAL)	{
		       ct_event_free(event);
		       continue;
	       }
	       ct_pr_event_get_pid(event, &pid);
	       if (ct_pr_event_get_sender(event, &sender) == ENOENT)
		       printf("process %ld killed by unknown process\n",
			   (long)pid);
	       else
		       printf("process %ld killed by process %ld\n",
			   (long)pid, (long)sender);
	       ct_event_free(event);
       }
	       ...

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

       +-----------------------------+-----------------------------+
       |      ATTRIBUTE	TYPE	     |	    ATTRIBUTE VALUE	   |
       +-----------------------------+-----------------------------+
       |Interface Stability	     |Evolving			   |
       +-----------------------------+-----------------------------+
       |MT-Level		     |Safe			   |
       +-----------------------------+-----------------------------+

SEE ALSO
       ct_event_free(3CONTRACT), ct_event_read(3CONTRACT), ct_event_read_crit-
       ical(3CONTRACT),	  libcontract(3LIB),   contract(4),   process(4),  at-
       tributes(5), lfcompile(5)

SunOS 5.10			  19 Jul 2004	ct_pr_event_get_pid(3CONTRACT)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | EXAMPLES | ATTRIBUTES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=ct_pr_event_get_zcorefile&sektion=3contract&manpath=SunOS+5.10>

home | help