1*24db4641Seschrock /* 2*24db4641Seschrock * CDDL HEADER START 3*24db4641Seschrock * 4*24db4641Seschrock * The contents of this file are subject to the terms of the 5*24db4641Seschrock * Common Development and Distribution License (the "License"). 6*24db4641Seschrock * You may not use this file except in compliance with the License. 7*24db4641Seschrock * 8*24db4641Seschrock * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*24db4641Seschrock * or http://www.opensolaris.org/os/licensing. 10*24db4641Seschrock * See the License for the specific language governing permissions 11*24db4641Seschrock * and limitations under the License. 12*24db4641Seschrock * 13*24db4641Seschrock * When distributing Covered Code, include this CDDL HEADER in each 14*24db4641Seschrock * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*24db4641Seschrock * If applicable, add the following below this CDDL HEADER, with the 16*24db4641Seschrock * fields enclosed by brackets "[]" replaced with your own identifying 17*24db4641Seschrock * information: Portions Copyright [yyyy] [name of copyright owner] 18*24db4641Seschrock * 19*24db4641Seschrock * CDDL HEADER END 20*24db4641Seschrock */ 21*24db4641Seschrock /* 22*24db4641Seschrock * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*24db4641Seschrock * Use is subject to license terms. 24*24db4641Seschrock */ 25*24db4641Seschrock 26*24db4641Seschrock #ifndef _LIBDISKSTATUS_H 27*24db4641Seschrock #define _LIBDISKSTATUS_H 28*24db4641Seschrock 29*24db4641Seschrock #pragma ident "%Z%%M% %I% %E% SMI" 30*24db4641Seschrock 31*24db4641Seschrock #include <libnvpair.h> 32*24db4641Seschrock #include <sys/types.h> 33*24db4641Seschrock 34*24db4641Seschrock #ifdef __cplusplus 35*24db4641Seschrock extern "C" { 36*24db4641Seschrock #endif 37*24db4641Seschrock 38*24db4641Seschrock typedef struct disk_status disk_status_t; 39*24db4641Seschrock 40*24db4641Seschrock /* 41*24db4641Seschrock * Error definitions 42*24db4641Seschrock */ 43*24db4641Seschrock #define EDS_BASE 2000 44*24db4641Seschrock 45*24db4641Seschrock enum { 46*24db4641Seschrock EDS_NOMEM = EDS_BASE, /* memory allocation failure */ 47*24db4641Seschrock EDS_CANT_OPEN, /* failed to open device */ 48*24db4641Seschrock EDS_NO_TRANSPORT, /* no supported transport */ 49*24db4641Seschrock EDS_NOT_SUPPORTED, /* status information not supported */ 50*24db4641Seschrock EDS_NOT_SIMULATOR, /* not a valid simulator file */ 51*24db4641Seschrock EDS_IO /* I/O error */ 52*24db4641Seschrock }; 53*24db4641Seschrock 54*24db4641Seschrock /* 55*24db4641Seschrock * Basic library functions 56*24db4641Seschrock */ 57*24db4641Seschrock extern disk_status_t *disk_status_open(const char *, int *); 58*24db4641Seschrock extern void disk_status_close(disk_status_t *); 59*24db4641Seschrock extern const char *disk_status_errmsg(int); 60*24db4641Seschrock extern void disk_status_set_debug(boolean_t); 61*24db4641Seschrock extern int disk_status_errno(disk_status_t *); 62*24db4641Seschrock 63*24db4641Seschrock /* 64*24db4641Seschrock * Miscellaneous functions. 65*24db4641Seschrock */ 66*24db4641Seschrock extern const char *disk_status_path(disk_status_t *); 67*24db4641Seschrock 68*24db4641Seschrock /* 69*24db4641Seschrock * Main entry point. 70*24db4641Seschrock */ 71*24db4641Seschrock extern nvlist_t *disk_status_get(disk_status_t *); 72*24db4641Seschrock 73*24db4641Seschrock /* 74*24db4641Seschrock * Utility function to simulate predictive failure (device-specific). 75*24db4641Seschrock */ 76*24db4641Seschrock extern int disk_status_test_predfail(disk_status_t *); 77*24db4641Seschrock 78*24db4641Seschrock #ifdef __cplusplus 79*24db4641Seschrock } 80*24db4641Seschrock #endif 81*24db4641Seschrock 82*24db4641Seschrock #endif /* _LIBDISKSTATUS_H */ 83