fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER START
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * The contents of this file are subject to the terms of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Common Development and Distribution License (the "License").
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You may not use this file except in compliance with the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * or http://www.opensolaris.org/os/licensing.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the License for the specific language governing permissions
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * and limitations under the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * When distributing Covered Code, include this CDDL HEADER in each
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * If applicable, add the following below this CDDL HEADER, with the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * fields enclosed by brackets "[]" replaced with your own identifying
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * information: Portions Copyright [yyyy] [name of copyright owner]
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER END
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
e77b06d21580f630e0a7c437495ab283d3672828tomee * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Use is subject to license terms.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <stdlib.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <stddef.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <limits.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <strings.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <pthread.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#include <dtrace_jni.h>
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * dtj_jnitab.c defines the JNI table of classes, methods, and fields belonging
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * to the Java DTrace API. Another JNI table defining classes from the JDK is
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * defined in dtj_util.c. Utility functions specific to the Java DTrace API are
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * also defined here, while general utilities are defined in dtj_util.c.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic uu_list_pool_t *g_request_pool = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic uu_list_pool_t *g_program_pool = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic uu_list_pool_t *g_aggval_pool = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic boolean_t dtj_check_request_pool(void);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic boolean_t dtj_check_program_pool(void);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic boolean_t dtj_check_aggval_pool(void);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* LocalConsumer */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_caller_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_gethandle_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_sethandle_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdatanext_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_drop_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_error_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_proc_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_interval_began_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_interval_ended_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejfieldID g_consumer_lock_jf = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* DTraceException */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_dtx_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_dtxinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* InterfaceAttributes */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_attr_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_attrinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_attrset_name_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_attrset_data_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_attrset_class_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ProbeDescription */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_probedesc_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_probedescinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejfieldID g_probedesc_id_jf = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ProbeInfo */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_probeinfo_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_probeinfoinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Probe */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_probe_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_probeinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Program */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_program_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_proginit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejfieldID g_progid_jf = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejfieldID g_proginfo_jf = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Program.File */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_programfile_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_fproginit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ProgramInfo */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_proginfo_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_proginfoinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Flow */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_flow_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_flowinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ProbeData */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_pdata_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdatainit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_rec_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_trace_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_stack_jm = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomeejmethodID g_pdataadd_symbol_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_printf_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_printa_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdatainvalidate_printa_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_aggrec_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_printa_str_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataadd_exit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataattach_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataset_formatted_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_pdataclear_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Drop */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_drop_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_dropinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Error */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_error_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_errinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ProcessState */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_process_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_procinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_procexit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Aggregate */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_agg_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_agginit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggaddrec_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* AggregateSpec */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggspec_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggspec_included_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggspec_cleared_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Tuple */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_tuple_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_tupleinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_tupleadd_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_tuplesize_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejfieldID g_tuple_EMPTY_jsf = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* AggregationRecord */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggrec_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggrecinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggrecget_tuple_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* SumValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggsum_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggsuminit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* CountValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggcount_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggcountinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* AvgValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggavg_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggavginit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* MinValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggmin_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggmininit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* MaxValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_aggmax_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_aggmaxinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
e77b06d21580f630e0a7c437495ab283d3672828tomee/* StddevValue */
e77b06d21580f630e0a7c437495ab283d3672828tomeejclass g_aggstddev_jc = 0;
e77b06d21580f630e0a7c437495ab283d3672828tomeejmethodID g_aggstddevinit_jm = 0;
e77b06d21580f630e0a7c437495ab283d3672828tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* KernelStackRecord */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_stack_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_parsestack_jsm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_stackinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_stackset_frames_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* UserStackRecord */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_ustack_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_ustackinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_ustackset_frames_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Distribution */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_adist_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_dist_normal_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* LogDistribution */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_dist_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_distinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe/* LogLinear Distribution */
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowejclass g_lldist_jc = 0;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard LowejmethodID g_lldistinit_jm = 0;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* LinearDistribution */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejclass g_ldist_jc = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeejmethodID g_ldistinit_jm = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
127bbe13a6d36580af6a8ded154f1201a6250772tomee/* KernelSymbolRecord */
127bbe13a6d36580af6a8ded154f1201a6250772tomeejclass g_symbol_jc = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomeejmethodID g_symbolinit_jm = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomeejmethodID g_symbolset_name_jm = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomee
127bbe13a6d36580af6a8ded154f1201a6250772tomee/* UserSymbolRecord */
127bbe13a6d36580af6a8ded154f1201a6250772tomeejclass g_usymbol_jc = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomeejmethodID g_usymbolinit_jm = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomeejmethodID g_usymbolset_name_jm = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomee
127bbe13a6d36580af6a8ded154f1201a6250772tomee/* ScalarRecord */
127bbe13a6d36580af6a8ded154f1201a6250772tomeejclass g_scalar_jc = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomeejmethodID g_scalarinit_jm = 0;
127bbe13a6d36580af6a8ded154f1201a6250772tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic dtj_status_t
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_table_load(JNIEnv *jenv)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee /*
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee * If you change this table, increment DTRACE_JNI_VERSION in
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee * dtrace_jni.c.
4ae67516a1d5dc4a5dbc761762bad5b596647388tomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee static const dtj_table_entry_t table[] = {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* LocalConsumer */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_caller_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/LocalConsumer" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_gethandle_jm, "getHandle", "()I" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_sethandle_jm, "setHandle", "(I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdatanext_jm, "nextProbeData",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/ProbeData;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_drop_jm, "dataDropped",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/Drop;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_error_jm, "errorEncountered",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/Error;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_proc_jm, "processStateChanged",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/ProcessState;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_interval_began_jm, "intervalBegan", "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_interval_ended_jm, "intervalEnded", "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JFIELD, &g_consumer_lock_jf, "consumerLock",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Ljava/lang/Object;" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* DTraceException */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_dtx_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/DTraceException" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_dtxinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* InterfaceAttributes */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_attr_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/InterfaceAttributes" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_attrinit_jm, CONSTRUCTOR, "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_attrset_name_jm, "setNameStability",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_attrset_data_jm, "setDataStability",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_attrset_class_jm, "setDependencyClass",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* ProbeDescription */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_probedesc_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/ProbeDescription" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_probedescinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;Ljava/lang/String;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Ljava/lang/String;Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JFIELD, &g_probedesc_id_jf, "id", "I" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* ProbeInfo */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_probeinfo_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/ProbeInfo" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_probeinfoinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/InterfaceAttributes;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/InterfaceAttributes;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee ")V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Probe */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_probe_jc, "org/opensolaris/os/dtrace/Probe" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_probeinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/ProbeDescription;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/ProbeInfo;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Program */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_program_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/Program" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_proginit_jm, CONSTRUCTOR, "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JFIELD, &g_progid_jf, "id", "I" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JFIELD, &g_proginfo_jf, "info",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/ProgramInfo;" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Program.File */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_programfile_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/Program$File" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_fproginit_jm, CONSTRUCTOR, "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* ProgramInfo */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_proginfo_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/ProgramInfo" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_proginfoinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/InterfaceAttributes;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/InterfaceAttributes;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Flow */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_flow_jc, "org/opensolaris/os/dtrace/Flow" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_flowinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* ProbeData */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_pdata_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/ProbeData" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdatainit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(IILorg/opensolaris/os/dtrace/ProbeDescription;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/Flow;I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_jm, "addDataElement",
127bbe13a6d36580af6a8ded154f1201a6250772tomee "(Lorg/opensolaris/os/dtrace/Record;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_rec_jm, "addRecord",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/Record;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_trace_jm, "addTraceRecord", "(I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_stack_jm, "addStackRecord",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(ILjava/lang/String;)V" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JMETHOD, &g_pdataadd_symbol_jm, "addSymbolRecord",
127bbe13a6d36580af6a8ded154f1201a6250772tomee "(ILjava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_printf_jm, "addPrintfRecord", "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_printa_jm, "addPrintaRecord", "(JZ)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdatainvalidate_printa_jm,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "invalidatePrintaRecord", "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_aggrec_jm, "addAggregationRecord",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;J"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/AggregationRecord;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_printa_str_jm,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "addPrintaFormattedString",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/Tuple;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataadd_exit_jm, "addExitRecord", "(I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataattach_jm, "attachRecordElements",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(II)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataset_formatted_jm, "setFormattedString",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_pdataclear_jm, "clearNativeElements", "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Drop */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_drop_jc, "org/opensolaris/os/dtrace/Drop" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_dropinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(ILjava/lang/String;JJLjava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Error */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_error_jc, "org/opensolaris/os/dtrace/Error" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_errinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/ProbeDescription;IIII"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Ljava/lang/String;JLjava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* ProcessState */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_process_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/ProcessState" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_procinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(ILjava/lang/String;ILjava/lang/String;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Ljava/lang/Integer;Ljava/lang/String;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_procexit_jm, "setExitStatus", "(I)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Aggregate */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_agg_jc, "org/opensolaris/os/dtrace/Aggregate" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_agginit_jm, CONSTRUCTOR, "(J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggaddrec_jm, "addRecord",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;J"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/AggregationRecord;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* AggregateSpec */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggspec_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/AggregateSpec" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggspec_included_jm, "isIncluded",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)Z" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggspec_cleared_jm, "isCleared",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)Z" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Tuple */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_tuple_jc, "org/opensolaris/os/dtrace/Tuple" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_tupleinit_jm, CONSTRUCTOR, "()V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_tupleadd_jm, "addElement",
127bbe13a6d36580af6a8ded154f1201a6250772tomee "(Lorg/opensolaris/os/dtrace/ValueRecord;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_tuplesize_jm, "size", "()I" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JFIELD_STATIC, &g_tuple_EMPTY_jsf, "EMPTY",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/Tuple;" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* AggregationRecord */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggrec_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/AggregationRecord" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggrecinit_jm, CONSTRUCTOR,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Lorg/opensolaris/os/dtrace/Tuple;"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Lorg/opensolaris/os/dtrace/AggregationValue;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggrecget_tuple_jm, "getTuple",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "()Lorg/opensolaris/os/dtrace/Tuple;" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* SumValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggsum_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/SumValue" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggsuminit_jm, CONSTRUCTOR, "(J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* CountValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggcount_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/CountValue" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggcountinit_jm, CONSTRUCTOR, "(J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* AvgValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggavg_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/AvgValue" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggavginit_jm, CONSTRUCTOR, "(JJJ)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* MinValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggmin_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/MinValue" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggmininit_jm, CONSTRUCTOR, "(J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* MaxValue */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_aggmax_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/MaxValue" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_aggmaxinit_jm, CONSTRUCTOR, "(J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
e77b06d21580f630e0a7c437495ab283d3672828tomee /* StddevValue */
e77b06d21580f630e0a7c437495ab283d3672828tomee { JCLASS, &g_aggstddev_jc,
e77b06d21580f630e0a7c437495ab283d3672828tomee "org/opensolaris/os/dtrace/StddevValue" },
e77b06d21580f630e0a7c437495ab283d3672828tomee { JMETHOD, &g_aggstddevinit_jm, CONSTRUCTOR,
e77b06d21580f630e0a7c437495ab283d3672828tomee "(JJLjava/math/BigInteger;)V" },
e77b06d21580f630e0a7c437495ab283d3672828tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* KernelStackRecord */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_stack_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/KernelStackRecord" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD_STATIC, &g_parsestack_jsm, "parse",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "(Ljava/lang/String;)"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "[Lorg/opensolaris/os/dtrace/StackFrame;" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_stackinit_jm, CONSTRUCTOR, "([B)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_stackset_frames_jm, "setStackFrames",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "([Lorg/opensolaris/os/dtrace/StackFrame;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* UserStackRecord */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_ustack_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/UserStackRecord" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_ustackinit_jm, CONSTRUCTOR, "(I[B)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_ustackset_frames_jm, "setStackFrames",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "([Lorg/opensolaris/os/dtrace/StackFrame;)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Distribution */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_adist_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/Distribution" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_dist_normal_jm, "normalizeBuckets", "(J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* LogDistribution */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_dist_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/LogDistribution" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_distinit_jm, CONSTRUCTOR, "([J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe /* LogLinearDistribution */
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe { JCLASS, &g_lldist_jc,
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe "org/opensolaris/os/dtrace/LogLinearDistribution" },
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe { JMETHOD, &g_lldistinit_jm, CONSTRUCTOR, "(J[J)V" },
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* LinearDistribution */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JCLASS, &g_ldist_jc,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "org/opensolaris/os/dtrace/LinearDistribution" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { JMETHOD, &g_ldistinit_jm, CONSTRUCTOR, "(JJ[J)V" },
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
127bbe13a6d36580af6a8ded154f1201a6250772tomee /* KernelSymbolRecord */
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JCLASS, &g_symbol_jc,
127bbe13a6d36580af6a8ded154f1201a6250772tomee "org/opensolaris/os/dtrace/KernelSymbolRecord" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JMETHOD, &g_symbolinit_jm, CONSTRUCTOR, "(J)V" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JMETHOD, &g_symbolset_name_jm, "setSymbol",
127bbe13a6d36580af6a8ded154f1201a6250772tomee "(Ljava/lang/String;)V" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee
127bbe13a6d36580af6a8ded154f1201a6250772tomee /* UserSymbolRecord */
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JCLASS, &g_usymbol_jc,
127bbe13a6d36580af6a8ded154f1201a6250772tomee "org/opensolaris/os/dtrace/UserSymbolRecord" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JMETHOD, &g_usymbolinit_jm, CONSTRUCTOR, "(IJ)V" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JMETHOD, &g_usymbolset_name_jm, "setSymbol",
127bbe13a6d36580af6a8ded154f1201a6250772tomee "(Ljava/lang/String;)V" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee
127bbe13a6d36580af6a8ded154f1201a6250772tomee /* ScalarRecord */
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JCLASS, &g_scalar_jc,
127bbe13a6d36580af6a8ded154f1201a6250772tomee "org/opensolaris/os/dtrace/ScalarRecord" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee { JMETHOD, &g_scalarinit_jm, CONSTRUCTOR,
127bbe13a6d36580af6a8ded154f1201a6250772tomee "(Ljava/lang/Object;I)V" },
127bbe13a6d36580af6a8ded154f1201a6250772tomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee { DTJ_TYPE_END }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee };
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (dtj_cache_jni_classes(jenv, table));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_status_t
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_load(JNIEnv *jenv)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (dtj_load_common(jenv) != DTJ_OK) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Java Error pending */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (DTJ_ERR);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (dtj_table_load(jenv));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic boolean_t
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_check_request_pool(void)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!g_request_pool) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee g_request_pool = uu_list_pool_create("g_request_pool",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee sizeof (dtj_request_t),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee offsetof(dtj_request_t, dtjr_node),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_pointer_list_entry_cmp,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (g_dtj_util_debug ? UU_LIST_POOL_DEBUG : 0));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!g_request_pool) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (B_FALSE);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (B_TRUE);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_request_t *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_request_create(JNIEnv *jenv, dtj_request_type_t type, ...)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_request_t *r;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_check_request_pool()) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate request pool");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee r = uu_zalloc(sizeof (dtj_request_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (r) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_init(r, &r->dtjr_node, g_request_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee r->dtjr_type = type;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee r->dtjr_args = dtj_string_list_create();
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (r->dtjr_args) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee va_list ap;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee const char *arg;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee int i, len;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee va_start(ap, type);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee switch (type) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee case DTJ_REQUEST_OPTION:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee len = 2;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee break;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee default:
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee len = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee for (i = 0; i < len; ++i) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee arg = va_arg(ap, char *);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_string_list_add(r->dtjr_args, arg)) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to add request arg");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(r, &r->dtjr_node,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee g_request_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_request_destroy(r, NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee r = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee va_end(ap);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate request arglist");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(r, &r->dtjr_node, g_request_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_request_destroy(r, NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee r = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate request");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (r);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic boolean_t
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_check_program_pool(void)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!g_program_pool) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee g_program_pool = uu_list_pool_create("g_program_pool",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee sizeof (dtj_program_t),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee offsetof(dtj_program_t, dtjp_node),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_pointer_list_entry_cmp,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (g_dtj_util_debug ? UU_LIST_POOL_DEBUG : 0));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!g_program_pool) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (B_FALSE);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (B_TRUE);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_program_t *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_program_create(JNIEnv *jenv, dtj_program_type_t type, const char *name)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_program_t *p;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_check_program_pool()) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate program pool");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee p = uu_zalloc(sizeof (dtj_program_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (p) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee char *program_name;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_init(p, &p->dtjp_node, g_program_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee p->dtjp_type = type;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee program_name = malloc((size_t)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (sizeof (char)) * (strlen(name) + 1));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (program_name) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (void) strcpy(program_name, name);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee p->dtjp_name = program_name;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee p->dtjp_enabled = B_FALSE;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate program name");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(p, &p->dtjp_node, g_program_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_program_destroy(p, NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee p = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate program");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (p);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic boolean_t
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_check_aggval_pool(void)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!g_aggval_pool) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee g_aggval_pool = uu_list_pool_create("g_aggval_pool",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee sizeof (dtj_aggval_t),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee offsetof(dtj_aggval_t, dtja_node),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_pointer_list_entry_cmp,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (g_dtj_util_debug ? UU_LIST_POOL_DEBUG : 0));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!g_aggval_pool) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (B_FALSE);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (B_TRUE);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_aggval_t *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_aggval_create(JNIEnv *jenv, jobject aggval, const char *aggname,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee int64_t aggid)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_aggval_t *e;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_check_aggval_pool()) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate aggval entry pool");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee e = uu_zalloc(sizeof (dtj_aggval_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (e) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee char *a_name;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_init(e, &e->dtja_node, g_aggval_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee e->dtja_value = aggval;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee a_name = malloc((size_t)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (sizeof (char)) * (strlen(aggname) + 1));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (a_name) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (void) strcpy(a_name, aggname);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee e->dtja_aggname = a_name;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate aggregation name");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(e, &e->dtja_node, g_aggval_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* caller responsible for input java reference */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee e->dtja_value = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_aggval_destroy(e, jenv);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee e = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee e->dtja_aggid = aggid;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate aggval entry");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (e);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_status_t
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_java_consumer_init(JNIEnv *jenv, dtj_java_consumer_t *jc)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_check_aggval_pool()) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate aggval pool");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (DTJ_ERR);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_aggval_list = uu_list_create(g_aggval_pool, NULL,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (g_dtj_util_debug ? UU_LIST_DEBUG : 0));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!jc->dtjj_aggval_list) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate aggval list");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (DTJ_ERR);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* Does not throw exceptions */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_consumer_lock = (*jenv)->GetObjectField(jenv, jc->dtjj_caller,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee g_consumer_lock_jf);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (DTJ_OK);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeevoid
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_java_consumer_fini(JNIEnv *jenv, dtj_java_consumer_t *jc)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc->dtjj_probedata) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, jc->dtjj_probedata);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_probedata = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc->dtjj_printa_buffer) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, jc->dtjj_printa_buffer);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_printa_buffer = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc->dtjj_aggregate) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, jc->dtjj_aggregate);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_aggregate = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc->dtjj_tuple) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, jc->dtjj_tuple);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_tuple = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc->dtjj_aggval_list) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_list_destroy(jc->dtjj_aggval_list,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_aggval_destroy, jenv);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_aggval_list = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * aggregate_spec records an input argument to a native JNI
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * function (a reference we did not create), so we are not
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * responsible for it.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_aggregate_spec = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * probelist records an in-out argument to a native JNI function
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * (a reference we did not create), so we are not responsible
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * for it.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_probelist = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (jc->dtjj_exception) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, jc->dtjj_exception);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_exception = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, jc->dtjj_consumer_lock);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jc->dtjj_consumer_lock = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_consumer_t *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_consumer_create(JNIEnv *jenv)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_consumer_t *c;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_check_request_pool()) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate request pool");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!dtj_check_program_pool()) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate program pool");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c = uu_zalloc(sizeof (dtj_consumer_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (c) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_request_list = uu_list_create(g_request_pool, NULL,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (g_dtj_util_debug ? UU_LIST_DEBUG : 0));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!c->dtjc_request_list) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate consumer request list");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_consumer_destroy(c);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (void) pthread_mutex_init(&c->dtjc_request_list_lock, NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_program_list = uu_list_create(g_program_pool, NULL,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (g_dtj_util_debug ? UU_LIST_DEBUG : 0));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!c->dtjc_program_list) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate consumer program list");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_consumer_destroy(c);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_probedata_rec_i = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_probedata_act = DTRACEACT_NONE;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_aggid = -1;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_expected = -1;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee c->dtjc_state = DTJ_CONSUMER_INIT;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee } else {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_throw_out_of_memory(jenv,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "Failed to allocate consumer");
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (c);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeevoid
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ARGSUSED */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_request_destroy(void *v, void *arg)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (v) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_request_t *r = v;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_string_list_destroy(r->dtjr_args);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(r, &r->dtjr_node, g_request_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee bzero(v, sizeof (dtj_request_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_free(v);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeevoid
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* ARGSUSED */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_program_destroy(void *v, void *arg)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (v) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_program_t *p = v;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (p->dtjp_name) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee free((void *)p->dtjp_name);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(p, &p->dtjp_node, g_program_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee bzero(v, sizeof (dtj_program_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_free(v);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeevoid
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_aggval_destroy(void *v, void *arg)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (v) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_aggval_t *a = v;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (a->dtja_value && arg) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee JNIEnv *jenv = arg;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, a->dtja_value);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (a->dtja_aggname) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee free((void *)a->dtja_aggname);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_list_node_fini(a, &a->dtja_node, g_aggval_pool);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee bzero(v, sizeof (dtj_aggval_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_free(v);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Frees per-consumer state. Assumes that the DTrace handle has been closed
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * already.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeevoid
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_consumer_destroy(dtj_consumer_t *c)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (c) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_list_destroy(c->dtjc_request_list, dtj_request_destroy,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (void) pthread_mutex_destroy(&c->dtjc_request_list_lock);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_list_destroy(c->dtjc_program_list, dtj_program_destroy,
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /*
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Cannot dtrace_proc_release the c->process_list proc
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * elements here, because we need the dtrace handle for that.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * By the time this destructor is called, the dtrace handle is
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * already closed. The proc elements are released in
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * dtrace_jni.c _close().
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (c->dtjc_process_list) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee dtj_list_destroy(c->dtjc_process_list, NULL, NULL);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee bzero(c, sizeof (dtj_consumer_t));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee uu_free(c);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeevoid
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeedtj_throw_dtrace_exception(dtj_java_consumer_t *jc, const char *fmt, ...)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee{
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee JNIEnv *jenv = jc->dtjj_jenv;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee va_list ap;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee char msg[DTJ_MSG_SIZE];
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jobject message = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee jobject exception = NULL;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee va_start(ap, fmt);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (void) vsnprintf(msg, sizeof (msg), fmt, ap);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee va_end(ap);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee message = dtj_NewStringNative(jenv, msg);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (!message) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return; /* java exception pending */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee exception = (*jenv)->NewObject(jenv, g_dtx_jc, g_dtxinit_jm, message);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, message);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (exception) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->Throw(jenv, exception);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (*jenv)->DeleteLocalRef(jenv, exception);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee }
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee}