dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / tools / protocmp / list.h
blob497fd43650e94a960fd98ae0488fcea709ce00db
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
19 * CDDL HEADER END
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _LIST_H
27 #define _LIST_H
29 #pragma ident "%Z%%M% %I% %E% SMI"
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
36 * Constants
38 #define MAXNAME 256
39 #define TYPESIZE 32
43 * find_elem flags
46 #define FOLLOW_LINK 1
47 #define NO_FOLLOW_LINK 0
50 * elem_list types
52 #define PROTOLIST_LIST 1
53 #define PROTODIR_LIST 2
54 #define EXCEPTION_LIST 3
58 * file types
61 #define CHAR_DEV_T 'c'
62 #define BLOCK_DEV_T 'b'
63 #define DIR_T 'd'
64 #define FILE_T 'f'
65 #define EDIT_T 'e'
66 #define VOLATILE_T 'v'
67 #define SYM_LINK_T 's'
68 #define LINK_T 'l'
71 * Arch Values
74 /* sparc */
75 #define P_SPARC 1
76 #define P_SUN4 2
77 #define P_SUN4c 3
78 #define P_SUN4d 4
79 #define P_SUN4e 5
80 #define P_SUN4m 6
81 #define P_SUN4u 7
82 #define P_SUN4v 8
84 /* x86 values */
85 #define P_I386 101
86 #define P_I86PC 102
88 /* ppc values */
89 #define P_PPC 201
90 #define P_PREP 202
92 #if defined(sparc)
93 #define P_ISA P_SPARC
94 #elif defined(i386)
95 #define P_ISA P_I386
96 #elif defined(__ppc)
97 #define P_ISA P_PPC
98 #else
99 #error "Unknown instruction set"
100 #endif
102 #define P_ALL P_ISA
105 * typedefs
107 typedef struct pkg_list {
108 char pkg_name[MAXNAME];
109 struct pkg_list *next;
110 } pkg_list;
112 typedef struct elem {
113 int inode;
114 short perm;
115 int ref_cnt;
116 short flag;
117 short major;
118 short minor;
119 short arch;
120 struct elem *next;
121 struct elem *link_parent;
122 struct elem *link_sib;
123 pkg_list *pkgs;
124 char *symsrc;
125 char name[MAXNAME];
126 char owner[TYPESIZE];
127 char group[TYPESIZE];
128 char file_type;
129 } elem;
132 typedef struct {
133 int num_of_buckets;
134 elem **list;
135 short type;
136 } elem_list;
138 #define HASH_SIZE 4093
141 * Funcs
145 extern void add_elem(elem_list*, elem *);
146 extern pkg_list *add_pkg(pkg_list *, const char *);
147 extern elem *find_elem(elem_list *, elem *, int);
148 extern elem *find_elem_mach(elem_list *, elem *, int);
149 extern elem *find_elem_isa(elem_list *, elem *, int);
150 extern void init_list(elem_list *, int);
151 extern unsigned int hash(const char *str);
152 extern int processed_package(const char *pkgname);
153 extern void mark_processed(const char *pkgname);
154 #ifdef DEBUG
155 extern void examine_list(elem_list *list);
156 extern void print_list(elem_list *);
157 extern void print_type_list(elem_list *list, char file_type);
158 #endif
160 /* Global statistics */
161 extern int max_list_depth;
163 #ifdef __cplusplus
165 #endif
167 #endif /* _LIST_H */