Contract Management Library Functions
ct_pr_tmpl_set_transfer(3CONTRACT)
NAME
ct_pr_tmpl_set_transfer, ct_pr_tmpl_set_fatal,
ct_pr_tmpl_set_param, ct_pr_tmpl_set_svc_fmri,
ct_pr_tmpl_set_svc_aux, ct_pr_tmpl_get_transfer,
ct_pr_tmpl_get_fatal, ct_pr_tmpl_get_param,
ct_pr_tmpl_get_svc_fmri, ct_pr_tmpl_get_svc_aux - process
contract template functionsSYNOPSIS
cc [ flag... ] file... -D_LARGEFILE64_SOURCE -lcontract [ library... ]
#include
#include
int ct_pr_tmpl_set_transfer(int fd, ctid_t ctid);
int ct_pr_tmpl_set_fatal(int fd, uint_t events);
int ct_pr_tmpl_set_param(int fd, uint_t params);
int ct_pr_tmpl_set_svc_fmri(int fd, const char *fmri);
int ct_pr_tmpl_set_svc_aux(int fd, const char *aux);
int ct_pr_tmpl_get_transfer(int fd, ctid_t *ctidp);
int ct_pr_tmpl_get_fatal(int fd, uint_t *eventsp);
int ct_pr_tmpl_get_param(int fd, uint_t *paramsp);
int ct_pr_tmpl_get_svc_fmri(int fd, char *fmri, size_t size);
int ct_pr_tmpl_get_svc_aux(int fd, char *aux, size_t size);
DESCRIPTION
These functions read and write process contract terms and operate on process contract template file descriptors obtained from the contract(4) file system.The ct_pr_tmpl_set_transfer() and ct_pr_tmpl_get_transfer()
functions write and read the transfer contract term. TheSunOS 5.11 Last change: 25 Feb 2008 1
Contract Management Library Functionsct_pr_tmpl_set_transfer(3CONTRACT)
value is the ID of an empty regent process contract owned by the caller whose inherited contracts are to be transferred to a newly created contract.The ct_pr_tmpl_set_fatal() and ct_pr_tmpl_get_fatal() func-
tions write and read the fatal event set term. The value is a collection of bits as described in process(4).The ct_pr_tmpl_set_param() and ct_pr_tmpl_get_param() func-
tions write and read the parameter set term. The value is a collection of bits as described in process(4).The ct_pr_tmpl_set_svc_fmri() and ct_pr_tmpl_get_svc_fmri()
functions write and read the service FMRI value of a processcontract template. The ct_pr_tmpl_set_svc_fmri() function
requires the caller to have the {PRIV_CONTRACT_IDENTITY}
privilege in its effective set.The ct_pr_tmpl_set_svc_aux() and ct_pr_tmpl_get_svc_aux()
functions write and read the creator's auxiliary value of a process contract template.RETURN VALUES
Upon successful completion, ct_pr_tmpl_set_transfer(),
ct_pr_tmpl_set_fatal(), ct_pr_tmpl_set_param(),
ct_pr_tmpl_set_svc_fmri(), ct_pr_tmpl_set_svc_aux(),
ct_pr_tmpl_get_transfer(), ct_pr_tmpl_get_fatal(), and
ct_pr_tmpl_get_param() return 0. Otherwise, they return a
non-zero error value.
Upon successful completion, ct_pr_tmpl_get_svc_fmri() and
ct_pr_tmpl_get_svc_aux() return the size required to store
the value, which is the same value return by strcpy(3C) + 1. Insufficient buffer size can be checked by:if (ct_pr_tmpl_get_svc_fmri(fd, fmri, size) > size)
/* buffer is too small */Otherwise, ct_pr_tmpl_get_svc_fmri() and
ct_pr_tmpl_get_svc_aux() return -1 and set errno to indicate
the error.ERRORS
SunOS 5.11 Last change: 25 Feb 2008 2
Contract Management Library Functionsct_pr_tmpl_set_transfer(3CONTRACT)
The ct_pr_tmpl_set_param(), ct_pr_tmpl_set_svc_fmri(),
ct_pr_tmpl_set_svc_aux(), ct_pr_tmpl_get_svc_fmri() and
ct_pr_tmpl_get_svc_aux() functions will fail if:
EINVAL An invalid parameter was specified.The ct_pr_tmpl_set_fatal() function will fail if:
EINVAL An invalid event was specified.The ct_pr_tmpl_set_transfer() function will fail if:
ESRCH The ID specified by ctid does not correspond to a process contract. EACCES The ID specified by ctid does not correspond toa process contract owned by the calling pro-
cess. ENOTEMPTY The ID specified by ctid does not correspond to an empty process contract.The ct_pr_tmpl_set_svc_fmri() function will fail if:
EPERM The calling process does not have{PRIV_CONTRACT_IDENTITY} in its effective set.
EXAMPLES
Example 1 Create and activate a process contract template. The following example opens a new template, makes hardwareerrors and signals fatal events, makes hardware errors crit-
ical events, and activates the template. It then forks a process in the new contract using the requested terms.#include
#include
#include
...SunOS 5.11 Last change: 25 Feb 2008 3
Contract Management Library Functionsct_pr_tmpl_set_transfer(3CONTRACT)
int fd;fd = open("/system/contract/process/template", O_RDWR);
(void) ct_pr_tmpl_set_fatal(fd, CT_PR_EV_HWERR|CT_PR_EV_SIGNAL);
(void) ct_tmpl_set_critical(fd, CT_PR_EV_HWERR);
(void) ct_tmpl_activate(fd);
close(fd); if (fork()) {/* parent - owns new process contract */
... } else {/* child - in new process contract */
... } ... Example 2 Clear the process contract template. The following example opens the template file and requests that the active template be cleared.#include
#include
... int fd;fd = open("/system/contract/process/template", O_RDWR);
(void) ct_tmpl_clear(fd);
close(fd); ...ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 25 Feb 2008 4
Contract Management Library Functionsct_pr_tmpl_set_transfer(3CONTRACT)
______________________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | Safe |
|_____________________________|_____________________________|
SEE ALSO
libcontract(3LIB), strcpy(3C), contract(4), process(4), attributes(5), lfcompile(5)SunOS 5.11 Last change: 25 Feb 2008 5
Contract Management Library Functionsct_pr_tmpl_set_transfer(3CONTRACT)
SunOS 5.11 Last change: 25 Feb 2008 6