1*a864dc36Sdarran /* 2*a864dc36Sdarran * CDDL HEADER START 3*a864dc36Sdarran * 4*a864dc36Sdarran * The contents of this file are subject to the terms of the 5*a864dc36Sdarran * Common Development and Distribution License (the "License"). 6*a864dc36Sdarran * You may not use this file except in compliance with the License. 7*a864dc36Sdarran * 8*a864dc36Sdarran * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*a864dc36Sdarran * or http://www.opensolaris.org/os/licensing. 10*a864dc36Sdarran * See the License for the specific language governing permissions 11*a864dc36Sdarran * and limitations under the License. 12*a864dc36Sdarran * 13*a864dc36Sdarran * When distributing Covered Code, include this CDDL HEADER in each 14*a864dc36Sdarran * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*a864dc36Sdarran * If applicable, add the following below this CDDL HEADER, with the 16*a864dc36Sdarran * fields enclosed by brackets "[]" replaced with your own identifying 17*a864dc36Sdarran * information: Portions Copyright [yyyy] [name of copyright owner] 18*a864dc36Sdarran * 19*a864dc36Sdarran * CDDL HEADER END 20*a864dc36Sdarran */ 21*a864dc36Sdarran 22*a864dc36Sdarran /* 23*a864dc36Sdarran * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24*a864dc36Sdarran * Use is subject to license terms. 25*a864dc36Sdarran */ 26*a864dc36Sdarran 27*a864dc36Sdarran #ifndef _DT_PROGRAM_H 28*a864dc36Sdarran #define _DT_PROGRAM_H 29*a864dc36Sdarran 30*a864dc36Sdarran #pragma ident "%Z%%M% %I% %E% SMI" 31*a864dc36Sdarran 32*a864dc36Sdarran #ifdef __cplusplus 33*a864dc36Sdarran extern "C" { 34*a864dc36Sdarran #endif 35*a864dc36Sdarran 36*a864dc36Sdarran #include <dtrace.h> 37*a864dc36Sdarran #include <dt_list.h> 38*a864dc36Sdarran 39*a864dc36Sdarran typedef struct dt_stmt { 40*a864dc36Sdarran dt_list_t ds_list; /* list forward/back pointers */ 41*a864dc36Sdarran dtrace_stmtdesc_t *ds_desc; /* pointer to statement description */ 42*a864dc36Sdarran } dt_stmt_t; 43*a864dc36Sdarran 44*a864dc36Sdarran struct dtrace_prog { 45*a864dc36Sdarran dt_list_t dp_list; /* list forward/back pointers */ 46*a864dc36Sdarran dt_list_t dp_stmts; /* linked list of dt_stmt_t's */ 47*a864dc36Sdarran ulong_t **dp_xrefs; /* array of translator reference bitmaps */ 48*a864dc36Sdarran uint_t dp_xrefslen; /* length of dp_xrefs array */ 49*a864dc36Sdarran uint8_t dp_dofversion; /* DOF version this program requires */ 50*a864dc36Sdarran }; 51*a864dc36Sdarran 52*a864dc36Sdarran extern dtrace_prog_t *dt_program_create(dtrace_hdl_t *); 53*a864dc36Sdarran extern void dt_program_destroy(dtrace_hdl_t *, dtrace_prog_t *); 54*a864dc36Sdarran 55*a864dc36Sdarran extern dtrace_ecbdesc_t *dt_ecbdesc_create(dtrace_hdl_t *, 56*a864dc36Sdarran const dtrace_probedesc_t *); 57*a864dc36Sdarran extern void dt_ecbdesc_release(dtrace_hdl_t *, dtrace_ecbdesc_t *); 58*a864dc36Sdarran 59*a864dc36Sdarran #ifdef __cplusplus 60*a864dc36Sdarran } 61*a864dc36Sdarran #endif 62*a864dc36Sdarran 63*a864dc36Sdarran #endif /* _DT_PROGRAM_H */ 64