CT_DEV_TMPL_SET_ASET(3CONTRACT) Contract Management Library Functions
NAME
ct_dev_tmpl_set_aset, ct_dev_tmpl_get_aset, ct_dev_tmpl_set_minor,
ct_dev_tmpl_get_minor, ct_dev_tmpl_set_noneg,
ct_dev_tmpl_clear_noneg, ct_dev_tmpl_get_noneg - device contract
template functions
SYNOPSIS
cc [
flag... ]
file...
-D_LARGEFILE64_SOURCE -lcontract [
library... ]
#include <libcontract.h>
#include <sys/contract/device.h>
int ct_dev_tmpl_set_aset(int fd, uint_t aset);
int ct_dev_tmpl_get_aset(
int fd,
uint_t *asetp);
int ct_dev_tmpl_set_minor(
int fd,
char *minor);
int ct_dev_tmpl_get_minor(
int fd,
char *buf,
size_t *buflenp);
int ct_dev_tmpl_set_noneg(
int fd);
int ct_dev_tmpl_clear_noneg(
int fd);
int ct_dev_tmpl_get_noneg(
int fd,
uint_t *nonegp);
PARAMETERS
aset a bitset of one or more of device states
asetp a pointer to a variable into which the current A-set is to
be returned
buf a buffer into which the minor path is to be returned
buflenp a pointer to variable of type
size_t in which the size of
the buffer
buf is passed in. If the buffer is too small
the size of the buffer needed for a successful call is
passed back to the caller.
fd a file descriptor from an open of the device contract
template file in the contract filesystem (ctfs)
minor the
devfs path (the
/devices path without the "
/devices"
prefix) of a minor which is to be the subject of a
contract
nonegp a pointer to a
uint_t variable for receiving the current
setting of the "nonnegotiable" term in the template
DESCRIPTION
These functions read and write device contract terms and operate on
device contract template file descriptors obtained from the
contract(5) filesystem (ctfs).
The
ct_dev_tmpl_set_aset() and
ct_dev_tmpl_get_aset() functions write
and read the "acceptable states" set (or A-set for short). This is
the set of device states guaranteed by the contract. Any departure
from these states will result in the breaking of the contract and a
delivery of a critical contract event to the contract holder. The A-
set value is a bitset of one or more of the following device states:
CT_DEV_EV_ONLINE,
CT_DEV_EV_DEGRADED, and
CT_DEV_EV_OFFLINE.
The
ct_dev_tmpl_set_minor() and
ct_dev_tmpl_get_minor() functions
write and read the minor term (the device resource that is to be the
subject of the contract.) The value is a
devfs path to a device minor
node (minus the "
/devices" prefix). For the
ct_dev_tmpl_get_minor() function, a buffer at least
PATH_MAX in size must be passed in. If
the buffer is smaller than
PATH_MAX, then the minimum size of the
buffer required (
PATH_MAX) for this function is passed back to the
caller via the
buflenp argument.
The
ct_dev_tmpl_set_noneg() and
ct_dev_tmpl_get_noneg() functions
write and read the nonnegotiable term. If this term is set,
synchronous negotiation events are automatically NACKed on behalf of
the contract holder. For
ct_dev_tmpl_get_noneg(), the variable
pointed to by
nonegp is set to 1 if the "noneg" term is set or to 0
otherwise. The
ct_dev_tmpl_clear_noneg() term clears the
nonnegotiable term from a template.
RETURN VALUES
Upon successful completion, these functions return 0. Otherwise, they
return a non-zero error value.
ERRORS
The
ct_dev_tmpl_set_aset() function will fail if:
EINVAL A template file descriptor or A-set is invalid
The
ct_dev_tmpl_set_minor() function will fail if:
EINVAL One or more arguments is invalid.
ENXIO The minor named by minor path does not exist.
The
ct_dev_tmpl_set_noneg() function will fail if:
EPERM A process lacks sufficient privilege to NACK a device state
change.
The
ct_dev_tmpl_get_aset() and
ct_dev_tmpl_get_minor() functions will
fail if:
EINVAL One or more arguments is invalid.
ENOENT The requested term is not set.
The
ct_dev_tmpl_get_noneg() function will fail if:
EINVAL One or more arguments is invalid.
The
ct_dev_tmpl_get_minor() function will fail if:
EOVERFLOW The supplied buffer is too small.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+
SEE ALSO
libcontract(3LIB),
contract(5),
devices(5),
attributes(7),
lfcompile(7) August 9, 2007
CT_DEV_TMPL_SET_ASET(3CONTRACT)