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_list.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 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" /* * Simple doubly-linked list implementation. This implementation assumes that * each list element contains an embedded dt_list_t (previous and next * pointers), which is typically the first member of the element struct. * An additional dt_list_t is used to store the head (dl_next) and tail * (dl_prev) pointers. The current head and tail list elements have their * previous and next pointers set to NULL, respectively. */ #include <unistd.h> #include <assert.h> #include <dt_list.h> void dt_list_append(dt_list_t *dlp, void *new) { dt_list_t *p = dlp->dl_prev; /* p = tail list element */ dt_list_t *q = new; /* q = new list element */ dlp->dl_prev = q; q->dl_prev = p; q->dl_next = NULL; if (p != NULL) { assert(p->dl_next == NULL); p->dl_next = q; } else { assert(dlp->dl_next == NULL); dlp->dl_next = q; } } void dt_list_prepend(dt_list_t *dlp, void *new) { dt_list_t *p = new; /* p = new list element */ dt_list_t *q = dlp->dl_next; /* q = head list element */ dlp->dl_next = p; p->dl_prev = NULL; p->dl_next = q; if (q != NULL) { assert(q->dl_prev == NULL); q->dl_prev = p; } else { assert(dlp->dl_prev == NULL); dlp->dl_prev = p; } } void dt_list_insert(dt_list_t *dlp, void *after_me, void *new) { dt_list_t *p = after_me; dt_list_t *q = new; if (p == NULL || p->dl_next == NULL) { dt_list_append(dlp, new); return; } q->dl_next = p->dl_next; q->dl_prev = p; p->dl_next = q; q->dl_next->dl_prev = q; } void dt_list_delete(dt_list_t *dlp, void *existing) { dt_list_t *p = existing; if (p->dl_prev != NULL) p->dl_prev->dl_next = p->dl_next; else dlp->dl_next = p->dl_next; if (p->dl_next != NULL) p->dl_next->dl_prev = p->dl_prev; else dlp->dl_prev = p->dl_prev; }
Upload File
Create Folder