1fa9e4066Sahrens /* 2fa9e4066Sahrens * CDDL HEADER START 3fa9e4066Sahrens * 4fa9e4066Sahrens * The contents of this file are subject to the terms of the 5*bfe5f5a4Stalley * Common Development and Distribution License (the "License"). 6*bfe5f5a4Stalley * You may not use this file except in compliance with the License. 7fa9e4066Sahrens * 8fa9e4066Sahrens * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9fa9e4066Sahrens * or http://www.opensolaris.org/os/licensing. 10fa9e4066Sahrens * See the License for the specific language governing permissions 11fa9e4066Sahrens * and limitations under the License. 12fa9e4066Sahrens * 13fa9e4066Sahrens * When distributing Covered Code, include this CDDL HEADER in each 14fa9e4066Sahrens * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15fa9e4066Sahrens * If applicable, add the following below this CDDL HEADER, with the 16fa9e4066Sahrens * fields enclosed by brackets "[]" replaced with your own identifying 17fa9e4066Sahrens * information: Portions Copyright [yyyy] [name of copyright owner] 18fa9e4066Sahrens * 19fa9e4066Sahrens * CDDL HEADER END 20fa9e4066Sahrens */ 21*bfe5f5a4Stalley 22fa9e4066Sahrens /* 23*bfe5f5a4Stalley * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24fa9e4066Sahrens * Use is subject to license terms. 25fa9e4066Sahrens */ 26fa9e4066Sahrens 27fa9e4066Sahrens #ifndef _LIBZFS_JNI_DISKMGT_H 28fa9e4066Sahrens #define _LIBZFS_JNI_DISKMGT_H 29fa9e4066Sahrens 30*bfe5f5a4Stalley #include <libdiskmgt.h> 31*bfe5f5a4Stalley #include <sys/varargs.h> 32*bfe5f5a4Stalley 33fa9e4066Sahrens #ifdef __cplusplus 34fa9e4066Sahrens extern "C" { 35fa9e4066Sahrens #endif 36fa9e4066Sahrens 37fa9e4066Sahrens /* 38fa9e4066Sahrens * Types 39fa9e4066Sahrens */ 40fa9e4066Sahrens 41fa9e4066Sahrens typedef struct dmgt_slice { 42fa9e4066Sahrens char *name; 43fa9e4066Sahrens uint64_t start; 44fa9e4066Sahrens uint64_t size; 45fa9e4066Sahrens char *used_name; 46fa9e4066Sahrens char *used_by; 47fa9e4066Sahrens } dmgt_slice_t; 48fa9e4066Sahrens 49fa9e4066Sahrens typedef struct dmgt_disk { 50fa9e4066Sahrens char *name; 51fa9e4066Sahrens uint64_t size; 52fa9e4066Sahrens uint32_t blocksize; 53fa9e4066Sahrens int in_use; 54fa9e4066Sahrens 55fa9e4066Sahrens /* NULL-terminated array */ 56fa9e4066Sahrens char **aliases; 57fa9e4066Sahrens 58fa9e4066Sahrens /* NULL-terminated array */ 59fa9e4066Sahrens dmgt_slice_t **slices; 60fa9e4066Sahrens } dmgt_disk_t; 61fa9e4066Sahrens 62fa9e4066Sahrens /* Callback function for available disk iteration */ 63fa9e4066Sahrens typedef int (*dmgt_disk_iter_f)(dmgt_disk_t *, void *); 64fa9e4066Sahrens 65fa9e4066Sahrens /* 66fa9e4066Sahrens * Function prototypes 67fa9e4066Sahrens */ 68fa9e4066Sahrens 69fa9e4066Sahrens extern int dmgt_avail_disk_iter(dmgt_disk_iter_f func, void *data); 70fa9e4066Sahrens extern void dmgt_free_disk(dmgt_disk_t *); 71fa9e4066Sahrens extern void dmgt_free_slice(dmgt_slice_t *); 72fa9e4066Sahrens extern void dmgt_set_error_handler(void (*)(const char *, va_list)); 73fa9e4066Sahrens 74fa9e4066Sahrens #ifdef __cplusplus 75fa9e4066Sahrens } 76fa9e4066Sahrens #endif 77fa9e4066Sahrens 78fa9e4066Sahrens #endif /* _LIBZFS_JNI_DISKMGT_H */ 79