xref: /onnv-gate/usr/src/uts/sun/sys/dada/adapters/ghd/ghd_queue.h (revision 0:68f95e015346)
1*0Sstevel@tonic-gate /*
2*0Sstevel@tonic-gate  * CDDL HEADER START
3*0Sstevel@tonic-gate  *
4*0Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*0Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*0Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*0Sstevel@tonic-gate  * with the License.
8*0Sstevel@tonic-gate  *
9*0Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*0Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*0Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*0Sstevel@tonic-gate  * and limitations under the License.
13*0Sstevel@tonic-gate  *
14*0Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*0Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*0Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*0Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*0Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*0Sstevel@tonic-gate  *
20*0Sstevel@tonic-gate  * CDDL HEADER END
21*0Sstevel@tonic-gate  */
22*0Sstevel@tonic-gate /*
23*0Sstevel@tonic-gate  * Copyright (c) 1998 by Sun Microsystems, Inc.
24*0Sstevel@tonic-gate  * All rights reserved.
25*0Sstevel@tonic-gate  */
26*0Sstevel@tonic-gate 
27*0Sstevel@tonic-gate #ifndef _GHD_QUEUE_H
28*0Sstevel@tonic-gate #define	_GHD_QUEUE_H
29*0Sstevel@tonic-gate 
30*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
31*0Sstevel@tonic-gate 
32*0Sstevel@tonic-gate #ifdef	__cplusplus
33*0Sstevel@tonic-gate extern "C" {
34*0Sstevel@tonic-gate #endif
35*0Sstevel@tonic-gate 
36*0Sstevel@tonic-gate 
37*0Sstevel@tonic-gate /*
38*0Sstevel@tonic-gate  *  A list of singly linked elements
39*0Sstevel@tonic-gate  */
40*0Sstevel@tonic-gate 
41*0Sstevel@tonic-gate typedef struct L1el {
42*0Sstevel@tonic-gate 	struct L1el	*le_nextp;
43*0Sstevel@tonic-gate 	void		*le_datap;
44*0Sstevel@tonic-gate } L1el_t;
45*0Sstevel@tonic-gate 
46*0Sstevel@tonic-gate #define	L1EL_INIT(lep)	((lep)->le_nextp = NULL, (lep)->le_datap = 0)
47*0Sstevel@tonic-gate 
48*0Sstevel@tonic-gate typedef struct L1_head {
49*0Sstevel@tonic-gate 	L1el_t	*l1_headp;
50*0Sstevel@tonic-gate 	L1el_t	*l1_tailp;
51*0Sstevel@tonic-gate } L1_t;
52*0Sstevel@tonic-gate 
53*0Sstevel@tonic-gate #define	L1HEADER_INIT(lp) (((lp)->l1_headp = NULL), ((lp)->l1_tailp = NULL))
54*0Sstevel@tonic-gate #define	L1_EMPTY(lp)	((lp)->l1_headp == NULL)
55*0Sstevel@tonic-gate 
56*0Sstevel@tonic-gate void	 L1_add(L1_t *lp, L1el_t *lep, void *datap);
57*0Sstevel@tonic-gate void	 L1_delete(L1_t *lp, L1el_t *lep);
58*0Sstevel@tonic-gate void	*L1_remove(L1_t *lp);
59*0Sstevel@tonic-gate 
60*0Sstevel@tonic-gate 
61*0Sstevel@tonic-gate /*
62*0Sstevel@tonic-gate  * A list of doubly linked elements
63*0Sstevel@tonic-gate  */
64*0Sstevel@tonic-gate 
65*0Sstevel@tonic-gate typedef struct L2el {
66*0Sstevel@tonic-gate 	struct	L2el	*l2_nextp;
67*0Sstevel@tonic-gate 	struct	L2el	*l2_prevp;
68*0Sstevel@tonic-gate 	void		*l2_private;
69*0Sstevel@tonic-gate } L2el_t;
70*0Sstevel@tonic-gate 
71*0Sstevel@tonic-gate #define	L2_INIT(headp)	\
72*0Sstevel@tonic-gate 	(((headp)->l2_nextp = (headp)), ((headp)->l2_prevp = (headp)))
73*0Sstevel@tonic-gate 
74*0Sstevel@tonic-gate #define	L2_EMPTY(headp) ((headp)->l2_nextp == (headp))
75*0Sstevel@tonic-gate 
76*0Sstevel@tonic-gate void	L2_add(L2el_t *headp, L2el_t *elementp, void *priv);
77*0Sstevel@tonic-gate void	L2_delete(L2el_t *elementp);
78*0Sstevel@tonic-gate void	L2_add_head(L2el_t *headp, L2el_t *elementp, void *priv);
79*0Sstevel@tonic-gate void	*L2_remove_head(L2el_t *headp);
80*0Sstevel@tonic-gate void	*L2_next(L2el_t *elementp);
81*0Sstevel@tonic-gate 
82*0Sstevel@tonic-gate 
83*0Sstevel@tonic-gate #ifdef	__cplusplus
84*0Sstevel@tonic-gate }
85*0Sstevel@tonic-gate #endif
86*0Sstevel@tonic-gate 
87*0Sstevel@tonic-gate #endif /* _GHD_QUEUE_H */
88