xref: /illumos-gate/usr/src/man/man3contract/ct_dev_status_get_dev_state.3contract (revision ed093b41a93e8563e6e1e5dae0768dda2a7bcc27)
te
Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
CT_DEV_STATUS_GET_DEV_STATE 3CONTRACT "Aug 9, 2007"
NAME
ct_dev_status_get_dev_state, ct_dev_status_get_aset, ct_dev_status_get_minor, ct_dev_status_get_noneg - read contract status information from a status object
SYNOPSIS

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

int ct_dev_status_get_dev_state(ct_stathdl_t stathdl,
 uint_t *statep);

int ct_dev_status_get_aset(ct_stathdl_t stathdl,
 uint_t *asetp);

int ct_dev_status_get_minor(ct_stathdl_t stathdl, char *buf,
 size_t *buflenp);

int ct_dev_status_get_noneg(ct_stathdl_t stathdl,
 uint_t *nonegp);
PARAMETERS
asetp

a pointer to a uint_t variable for receiving the acceptable state set (such as A-set) for the contract

buf

a buffer for receiving the devfs path of a minor in a contract

buflenp

a pointer to a variable of type size_t for passing the size of the buffer buf. If the buffer is too small (< PATH_MAX), the minimum size of the buffer needed (PATH_MAX) is passed back to the caller with this argument.

nonegp

a pointer to a uint_t variable for receiving the setting of the "noneg" term

stathdl

a status object returned by ct_status_read(3CONTRACT)

statep

a pointer to a uint_t variable for receiving the current state of the device which is the subject of the contract

DESCRIPTION

These functions read contract status information from a status object stathdl returned by ct_status_read(). The detail level in the call to ct_status_read() needs to be at least CTD_FIXED for the following calls to be successful. The one exception is ct_dev_status_get_minor(), which requires a detail level of CTD_ALL.

The ct_dev_status_get_dev_state() function returns the current state of the device which is the subject of the contract. This can be one of the following: CT_DEV_EV_ONLINE

The device is online and functioning normally.

CT_DEV_EV_DEGRADED

The device is online but degraded.

CT_DEV_EV_OFFLINE

The device is offline and not configured.

The ct_dev_status_get_aset() function returns the A-set of the contract. This can be the bitset of one or more of the following states: CT_DEV_EV_ONLINE, CT_DEV_EV_DEGRADED, or CT_DEV_EV_OFFLINE.

The ct_dev_status_get_minor() function reads the devfs path of the minor participating in the contract. The devfs path returned does not include the /devices prefix. If the buffer passed in by the caller is too small (< PATH_MAX), the minimum size of the buffer required ( PATH_MAX) is returned to the caller via the buflenp argument.

The ct_dev_status_get_noneg() function returns the "noneg" setting for the contract. A value of 1 is returned in the nonegp argument if NONEG is set, else 0 is returned.

RETURN VALUES

Upon successful completion, these functions return 0. Otherwise, they return a non-zero error value.

ERRORS

The ct_dev_status_get_minor() function will fail if: EOVERFLOW

The buffer size is too small to hold the result.

The ct_dev_status_get_dev_state(), ct_dev_status_get_aset(), ct_dev_status_get_minor() and ct_dev_status_get_noneg() functions will fail if: EINVAL

An invalid argument was specified.

ENOENT

The requested data is not present in the status object.

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), devices (5), attributes (7), lfcompile (7)