1789Sahrens /* 2789Sahrens * CDDL HEADER START 3789Sahrens * 4789Sahrens * The contents of this file are subject to the terms of the 51499Stalley * Common Development and Distribution License (the "License"). 61499Stalley * You may not use this file except in compliance with the License. 7789Sahrens * 8789Sahrens * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9789Sahrens * or http://www.opensolaris.org/os/licensing. 10789Sahrens * See the License for the specific language governing permissions 11789Sahrens * and limitations under the License. 12789Sahrens * 13789Sahrens * When distributing Covered Code, include this CDDL HEADER in each 14789Sahrens * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15789Sahrens * If applicable, add the following below this CDDL HEADER, with the 16789Sahrens * fields enclosed by brackets "[]" replaced with your own identifying 17789Sahrens * information: Portions Copyright [yyyy] [name of copyright owner] 18789Sahrens * 19789Sahrens * CDDL HEADER END 20789Sahrens */ 211499Stalley 22789Sahrens /* 231206Stalley * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24789Sahrens * Use is subject to license terms. 25789Sahrens */ 26789Sahrens 27789Sahrens #ifndef _LIBZFS_JNI_UTIL_H 28789Sahrens #define _LIBZFS_JNI_UTIL_H 29789Sahrens 30789Sahrens #pragma ident "%Z%%M% %I% %E% SMI" 31789Sahrens 321499Stalley #include <jni.h> 331499Stalley #include <regex.h> 341499Stalley #include <libnvpair.h> 35*2082Seschrock #include <libzfs.h> 361499Stalley 37789Sahrens #ifdef __cplusplus 38789Sahrens extern "C" { 39789Sahrens #endif 40789Sahrens 41789Sahrens /* 42789Sahrens * Constants 43789Sahrens */ 44789Sahrens 45789Sahrens #define ZFSJNI_PACKAGE_DATA "com/sun/zfs/common/model/" 46789Sahrens 47789Sahrens /* 48789Sahrens * Types 49789Sahrens */ 50789Sahrens 51789Sahrens typedef struct zjni_Object { 52789Sahrens jclass class; 53789Sahrens jobject object; 54789Sahrens jmethodID constructor; 55789Sahrens } zjni_Object_t; 56789Sahrens 57789Sahrens typedef struct zjni_Collection { 58789Sahrens zjni_Object_t super; 59789Sahrens 60789Sahrens jmethodID method_add; 61789Sahrens jmethodID method_size; 62789Sahrens jmethodID method_toArray; 63789Sahrens } zjni_Collection_t; 64789Sahrens 65789Sahrens typedef struct zjni_ArrayList { 66789Sahrens zjni_Collection_t super; 67789Sahrens } zjni_ArrayList_t; 68789Sahrens 69789Sahrens typedef struct zjni_DatasetSet { 70789Sahrens zjni_Collection_t super; 71789Sahrens } zjni_DatasetSet_t; 72789Sahrens 73789Sahrens typedef struct zjni_ArrayCallbackData { 74789Sahrens JNIEnv *env; 75789Sahrens zjni_Collection_t *list; 76789Sahrens } zjni_ArrayCallbackData_t; 77789Sahrens 781206Stalley typedef struct zjni_field_mapping { 791206Stalley int value; 801206Stalley char *name; 811206Stalley } zjni_field_mapping_t; 821206Stalley 83894Stalley /* Signature for function to free data */ 84894Stalley typedef void (*zjni_free_f)(void *); 85894Stalley 86789Sahrens /* 87789Sahrens * Function prototypes 88789Sahrens */ 89789Sahrens 90894Stalley void zjni_free_array(void **array, zjni_free_f); 91789Sahrens void zjni_throw_exception(JNIEnv *, const char *, ...); 92789Sahrens jstring zjni_get_matched_string(JNIEnv *, char *, regmatch_t *); 93789Sahrens void zjni_get_dataset_from_snapshot(const char *, char *, size_t); 94789Sahrens jobjectArray zjni_Collection_to_array(JNIEnv *, zjni_Collection_t *, char *); 95789Sahrens void zjni_new_ArrayList(JNIEnv *, zjni_ArrayList_t *); 96789Sahrens void zjni_new_DatasetSet(JNIEnv *, zjni_DatasetSet_t *); 97789Sahrens jobject zjni_int_to_boolean(JNIEnv *, uint64_t); 981206Stalley jobject zjni_int_to_enum( 991206Stalley JNIEnv *, int, char *, char *, zjni_field_mapping_t *); 100789Sahrens jobject zjni_str_to_long(JNIEnv *, char *); 101789Sahrens jobject zjni_long_to_Long(JNIEnv *, uint64_t); 102789Sahrens jobject zjni_str_to_date(JNIEnv *, char *); 103894Stalley jobjectArray zjni_c_string_array_to_java(JNIEnv *, char **, int); 104894Stalley char **zjni_java_string_array_to_c(JNIEnv *, jobjectArray); 105789Sahrens int zjni_count_elements(void **); 106789Sahrens nvpair_t *zjni_nvlist_walk_nvpair( 107789Sahrens nvlist_t *, const char *, data_type_t, nvpair_t *); 108789Sahrens 109*2082Seschrock extern libzfs_handle_t *g_zfs; 110*2082Seschrock 111789Sahrens #ifdef __cplusplus 112789Sahrens } 113789Sahrens #endif 114789Sahrens 115789Sahrens #endif /* _LIBZFS_JNI_UTIL_H */ 116