003 File Manager
Current Path:
/usr/src/cddl/contrib/opensolaris/lib/libdtrace/common
usr
/
src
/
cddl
/
contrib
/
opensolaris
/
lib
/
libdtrace
/
common
/
📁
..
📄
drti.c
(5.62 KB)
📄
dt_aggregate.c
(51.43 KB)
📄
dt_as.c
(13.49 KB)
📄
dt_as.h
(1.89 KB)
📄
dt_buf.c
(4.12 KB)
📄
dt_buf.h
(2.01 KB)
📄
dt_cc.c
(71.28 KB)
📄
dt_cg.c
(61.79 KB)
📄
dt_consume.c
(74.05 KB)
📄
dt_decl.c
(30.71 KB)
📄
dt_decl.h
(4.45 KB)
📄
dt_dis.c
(14.65 KB)
📄
dt_dof.c
(28.19 KB)
📄
dt_dof.h
(2.06 KB)
📄
dt_error.c
(8.15 KB)
📄
dt_errtags.h
(13.26 KB)
📄
dt_grammar.y
(23.18 KB)
📄
dt_handle.c
(11.62 KB)
📄
dt_ident.c
(26.34 KB)
📄
dt_ident.h
(7.79 KB)
📄
dt_impl.h
(32.49 KB)
📄
dt_inttab.c
(2.56 KB)
📄
dt_inttab.h
(2.28 KB)
📄
dt_lex.l
(23.64 KB)
📄
dt_link.c
(49.01 KB)
📄
dt_list.c
(2.67 KB)
📄
dt_list.h
(1.52 KB)
📄
dt_map.c
(10.91 KB)
📄
dt_module.c
(45.28 KB)
📄
dt_module.h
(2.1 KB)
📄
dt_open.c
(61.61 KB)
📄
dt_options.c
(25.04 KB)
📄
dt_parser.c
(144.81 KB)
📄
dt_parser.h
(11.64 KB)
📄
dt_pcb.c
(5.56 KB)
📄
dt_pcb.h
(4.38 KB)
📄
dt_pid.c
(24.9 KB)
📄
dt_pid.h
(2.03 KB)
📄
dt_pq.c
(2.83 KB)
📄
dt_pq.h
(1.26 KB)
📄
dt_pragma.c
(15.55 KB)
📄
dt_print.c
(18.57 KB)
📄
dt_printf.c
(55.53 KB)
📄
dt_printf.h
(4.87 KB)
📄
dt_proc.c
(36.39 KB)
📄
dt_proc.h
(4.54 KB)
📄
dt_program.c
(14.32 KB)
📄
dt_program.h
(1.86 KB)
📄
dt_provider.c
(22.95 KB)
📄
dt_provider.h
(4.37 KB)
📄
dt_regset.c
(2.88 KB)
📄
dt_regset.h
(1.57 KB)
📄
dt_string.c
(5.75 KB)
📄
dt_string.h
(1.31 KB)
📄
dt_strtab.c
(5.74 KB)
📄
dt_strtab.h
(2.42 KB)
📄
dt_subr.c
(22.59 KB)
📄
dt_sugar.c
(13.71 KB)
📄
dt_work.c
(8.12 KB)
📄
dt_xlator.c
(11.3 KB)
📄
dt_xlator.h
(3.09 KB)
📄
dtrace.h
(23.64 KB)
📄
mkerrno.sh
(1.2 KB)
📄
mkerrtags.sh
(1.4 KB)
📄
mknames.sh
(1.33 KB)
📄
mksignal.sh
(1.22 KB)
Editing: dt_inttab.c
/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" #include <assert.h> #include <dt_inttab.h> #include <dt_impl.h> dt_inttab_t * dt_inttab_create(dtrace_hdl_t *dtp) { uint_t len = _dtrace_intbuckets; dt_inttab_t *ip; assert((len & (len - 1)) == 0); if ((ip = dt_zalloc(dtp, sizeof (dt_inttab_t))) == NULL || (ip->int_hash = dt_zalloc(dtp, sizeof (void *) * len)) == NULL) { dt_free(dtp, ip); return (NULL); } ip->int_hdl = dtp; ip->int_hashlen = len; return (ip); } void dt_inttab_destroy(dt_inttab_t *ip) { dt_inthash_t *hp, *np; for (hp = ip->int_head; hp != NULL; hp = np) { np = hp->inh_next; dt_free(ip->int_hdl, hp); } dt_free(ip->int_hdl, ip->int_hash); dt_free(ip->int_hdl, ip); } int dt_inttab_insert(dt_inttab_t *ip, uint64_t value, uint_t flags) { uint_t h = value & (ip->int_hashlen - 1); dt_inthash_t *hp; if (flags & DT_INT_SHARED) { for (hp = ip->int_hash[h]; hp != NULL; hp = hp->inh_hash) { if (hp->inh_value == value && hp->inh_flags == flags) return (hp->inh_index); } } if ((hp = dt_alloc(ip->int_hdl, sizeof (dt_inthash_t))) == NULL) return (-1); hp->inh_hash = ip->int_hash[h]; hp->inh_next = NULL; hp->inh_value = value; hp->inh_index = ip->int_index++; hp->inh_flags = flags; ip->int_hash[h] = hp; ip->int_nelems++; if (ip->int_head == NULL) ip->int_head = hp; else ip->int_tail->inh_next = hp; ip->int_tail = hp; return (hp->inh_index); } uint_t dt_inttab_size(const dt_inttab_t *ip) { return (ip->int_nelems); } void dt_inttab_write(const dt_inttab_t *ip, uint64_t *dst) { const dt_inthash_t *hp; for (hp = ip->int_head; hp != NULL; hp = hp->inh_next) *dst++ = hp->inh_value; }
Upload File
Create Folder