]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - cddl/contrib/opensolaris/lib/libdtrace/common/dt_as.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / cddl / contrib / opensolaris / lib / libdtrace / common / dt_as.h
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26
27 #ifndef _DT_AS_H
28 #define _DT_AS_H
29
30 #pragma ident   "%Z%%M% %I%     %E% SMI"
31
32 #include <sys/types.h>
33 #include <sys/dtrace.h>
34
35 #ifdef  __cplusplus
36 extern "C" {
37 #endif
38
39 typedef struct dt_irnode {
40         uint_t di_label;                /* label number or DT_LBL_NONE */
41         dif_instr_t di_instr;           /* instruction opcode */
42         void *di_extern;                /* opcode-specific external reference */
43         struct dt_irnode *di_next;      /* next instruction */
44 } dt_irnode_t;
45
46 #define DT_LBL_NONE     0               /* no label on this instruction */
47
48 typedef struct dt_irlist {
49         dt_irnode_t *dl_list;           /* pointer to first node in list */
50         dt_irnode_t *dl_last;           /* pointer to last node in list */
51         uint_t dl_len;                  /* number of valid instructions */
52         uint_t dl_label;                /* next label number to assign */
53 } dt_irlist_t;
54
55 extern void dt_irlist_create(dt_irlist_t *);
56 extern void dt_irlist_destroy(dt_irlist_t *);
57 extern void dt_irlist_append(dt_irlist_t *, dt_irnode_t *);
58 extern uint_t dt_irlist_label(dt_irlist_t *);
59
60 #ifdef  __cplusplus
61 }
62 #endif
63
64 #endif  /* _DT_AS_H */