CT_PR_STATUS_GET_PARAM(3CONTRACT) Contract Management Library Functions

NAME


ct_pr_status_get_param, ct_pr_status_get_fatal, ct_pr_status_get_members,
ct_pr_status_get_contracts, ct_pr_status_get_svc_fmri,
ct_pr_status_get_svc_aux, ct_pr_status_get_svc_ctid,
ct_pr_status_get_svc_creator - process contract status functions

SYNOPSIS


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

int ct_pr_status_get_param(ct_stathdl_t stathdl, uint_t *paramp);


int ct_pr_status_get_fatal(ct_stathdl_t stathdl, uint_t *eventsp);


int ct_pr_status_get_members(ct_stathdl_t stathdl,
pid_t **pidpp, uint_t *n);


int ct_pr_status_get_contracts(ct_stathdl_t stathdl,
ctid_t **idpp, uint_t *n);


int ct_pr_status_get_svc_fmri(ct_stathdl_t stathdl, char **fmri);


int ct_pr_status_get_svc_aux(ct_stathdl_t stathdl, char **aux);


int ct_pr_status_get_svc_ctid(ct_stathdl_t stathdl, ctid_t *ctid);


int ct_pr_status_get_svc_creator(ct_stathdl_t stathdl,
char **creator);


DESCRIPTION


These functions read process contract status information from a status
object returned by ct_status_read(3CONTRACT).


The ct_pr_status_get_param() function reads the parameter set term. The
value is a collection of bits as described in process(5).


The ct_pr_status_get_fatal() function reads the fatal event set term. The
value is a collection of bits as described in process(5).


The ct_pr_status_get_members() function obtains a list of the process IDs
of the members of the process contract. A pointer to an array of process
IDs is stored in *pidpp. The number of elements in this array is stored
in *n. These data are freed when the status object is freed by a call to
ct_status_free(3CONTRACT).


The ct_pr_status_get_contracts() function obtains a list of IDs of
contracts that have been inherited by the contract. A pointer to an array
of IDs is stored in *idpp. The number of elements in this array is stored
in *n. These data are freed when the status object is freed by a call to
ct_status_free().


The ct_pr_status_get_svc_fmri(), ct_pr_status_get_svc_creator(), and
ct_pr_status_get_svc_aux() functions read, respectively, the service
FMRI, the contract's creator execname and the creator's auxiliary field.
The buffer pointed to by fmri, aux or creator, is freed by a call to
ct_status_free() and should not be modified.


The ct_pr_status_get_svc_ctid() function reads the process contract id
for which the service FMRI was first set.

RETURN VALUES


Upon successful completion, ct_pr_status_get_param(),
ct_pr_status_get_fatal(), ct_pr_status_get_members(),
ct_pr_status_get_contracts(), ct_pr_status_get_svc_fmri(),
ct_pr_status_get_svc_creator(), ct_pr_status_get_svc_aux(), and
ct_pr_status_get_svc_ctid() return 0. Otherwise, they return a non-zero
error value.

ERRORS


The ct_pr_status_get_param(), ct_pr_status_get_fatal(),
ct_pr_status_get_members(), ct_pr_status_get_contracts(),
ct_pr_status_get_svc_fmri(), ct_pr_status_get_svc_creator(),
ct_pr_status_get_svc_aux(), and ct_pr_status_get_svc_ctid() functions
will fail if:

EINVAL
The stathdl argument is not a process contract status object.


The ct_pr_status_get_param(), ct_pr_status_get_fatal(),
ct_pr_status_get_members(), ct_r_status_get_contracts(),
ct_pr_status_get_svc_fmri(), ct_pr_status_get_svc_creator(),
ct_pr_status_get_svc_aux(), and ct_pr_status_get_svc_ctid() functions
will fail if:

ENOENT
The requested data were not available in the status object.


EXAMPLES


Example 1: Print members of process contract 1.




Open the status file for contract 1, read the contract's status, obtain
the list of processes, print them, and free the status object.


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

...
int fd;
uint_t i, n;
pid_t *procs;
ct_stathdl_t st;

fd = open("/system/contract/process/1/status");
ct_status_read(fd, &st);
ct_pr_status_get_members(st, &procs, &n);
for (i = 0 ; i < n; i++)
printf("%ld\n", (long)procs[i]);
ct_status_free(stat);
close(fd);
...


ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


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

SEE ALSO


ct_status_free(3CONTRACT), ct_status_read(3CONTRACT), libcontract(3LIB),
contract(5), process(5), attributes(7), lfcompile(7)

February 25, 2008
CT_PR_STATUS_GET_PARAM(3CONTRACT)