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]
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);
a pointer to a uint_t variable for receiving the acceptable state set (such as A-set) for the contract
a buffer for receiving the devfs path of a minor in a contract
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.
a pointer to a uint_t variable for receiving the setting of the "noneg" term
a status object returned by ct_status_read(3CONTRACT)
a pointer to a uint_t variable for receiving the current state of the device which is the subject of the contract
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.
The device is online but degraded.
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.
Upon successful completion, these functions return 0. Otherwise, they return a non-zero error value.
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.
The requested data is not present in the status object.
See attributes(7) for descriptions of the following attributes:
ATTRIBUTE TYPE ATTRIBUTE VALUE |
Interface Stability Committed |
MT-Level Safe |
ct_status_free (3CONTRACT), ct_status_read (3CONTRACT), libcontract (3LIB), contract (5), devices (5), attributes (7), lfcompile (7)