xref: /onnv-gate/usr/src/uts/common/sys/tnf_com.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) 1994, by Sun Microsytems, Inc.
24*0Sstevel@tonic-gate  */
25*0Sstevel@tonic-gate 
26*0Sstevel@tonic-gate #ifndef	_SYS_TNF_COM_H
27*0Sstevel@tonic-gate #define	_SYS_TNF_COM_H
28*0Sstevel@tonic-gate 
29*0Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
30*0Sstevel@tonic-gate 
31*0Sstevel@tonic-gate #include <sys/types.h>
32*0Sstevel@tonic-gate 
33*0Sstevel@tonic-gate #ifdef __cplusplus
34*0Sstevel@tonic-gate extern "C" {
35*0Sstevel@tonic-gate #endif
36*0Sstevel@tonic-gate 
37*0Sstevel@tonic-gate /*
38*0Sstevel@tonic-gate  * NOTE: All types are in host (not necessarily file) format.
39*0Sstevel@tonic-gate  * Readers are responsible for endian or other transformation.
40*0Sstevel@tonic-gate  */
41*0Sstevel@tonic-gate 
42*0Sstevel@tonic-gate /*
43*0Sstevel@tonic-gate  * Magic number(s): first word of TNF file.
44*0Sstevel@tonic-gate  *
45*0Sstevel@tonic-gate  * A writer stores the native unsigned 32-bit integer TNF_MAGIC.
46*0Sstevel@tonic-gate  * A same-endian reader will load it as TNF_MAGIC.
47*0Sstevel@tonic-gate  * A different-endian reader will load it as TNF_MAGIC_1.
48*0Sstevel@tonic-gate  */
49*0Sstevel@tonic-gate 
50*0Sstevel@tonic-gate #define	TNF_MAGIC		0x544e4600
51*0Sstevel@tonic-gate #define	TNF_MAGIC_1		0x00464e54
52*0Sstevel@tonic-gate 
53*0Sstevel@tonic-gate /*
54*0Sstevel@tonic-gate  * Fundamental types.  Machine dependent.
55*0Sstevel@tonic-gate  */
56*0Sstevel@tonic-gate 
57*0Sstevel@tonic-gate typedef char			tnf_char_t;
58*0Sstevel@tonic-gate typedef signed char		tnf_int8_t;
59*0Sstevel@tonic-gate typedef unsigned char		tnf_uint8_t;
60*0Sstevel@tonic-gate typedef short			tnf_int16_t;
61*0Sstevel@tonic-gate typedef unsigned short		tnf_uint16_t;
62*0Sstevel@tonic-gate typedef int			tnf_int32_t;
63*0Sstevel@tonic-gate typedef unsigned int		tnf_uint32_t;
64*0Sstevel@tonic-gate typedef longlong_t		tnf_int64_t;
65*0Sstevel@tonic-gate typedef u_longlong_t		tnf_uint64_t;
66*0Sstevel@tonic-gate typedef float			tnf_float32_t;
67*0Sstevel@tonic-gate typedef double			tnf_float64_t;
68*0Sstevel@tonic-gate 
69*0Sstevel@tonic-gate /*
70*0Sstevel@tonic-gate  * TNF references
71*0Sstevel@tonic-gate  */
72*0Sstevel@tonic-gate 
73*0Sstevel@tonic-gate typedef tnf_int32_t		tnf_ref32_t; /* self-relative, 32 bits */
74*0Sstevel@tonic-gate typedef tnf_int16_t		tnf_ref16_t; /* self-relative, 16 bits */
75*0Sstevel@tonic-gate typedef tnf_uint16_t		tnf_abs16_t; /* absolute, 16 bits */
76*0Sstevel@tonic-gate 
77*0Sstevel@tonic-gate /* Generation number for tag blocks */
78*0Sstevel@tonic-gate #define	TNF_TAG_GENERATION_NUM	0xffffffff
79*0Sstevel@tonic-gate 
80*0Sstevel@tonic-gate /* definition of space values */
81*0Sstevel@tonic-gate #define	TNF_SPACE_MASK		0x80000000
82*0Sstevel@tonic-gate #define	TNF_SPACE_PERMANENT	0x80000000
83*0Sstevel@tonic-gate #define	TNF_SPACE_RECLAIMABLE	0x0
84*0Sstevel@tonic-gate #define	TNF_SPACE_SIGN_BIT	0x40000000
85*0Sstevel@tonic-gate 
86*0Sstevel@tonic-gate /* Macros on setting or checking space values */
87*0Sstevel@tonic-gate #define	TNF_REF32_MAKE_PERMANENT(x)	((x) | TNF_SPACE_PERMANENT)
88*0Sstevel@tonic-gate #define	TNF_REF32_MAKE_RECLAIMABLE(x)	((x) & ~TNF_SPACE_MASK)
89*0Sstevel@tonic-gate #define	TNF_REF32_SPACE(x)	\
90*0Sstevel@tonic-gate 	((tnf_uint32_t)(x) & TNF_SPACE_MASK)
91*0Sstevel@tonic-gate #define	TNF_REF32_IS_PERMANENT(x)	\
92*0Sstevel@tonic-gate 	(TNF_REF32_SPACE(x) == TNF_SPACE_PERMANENT)
93*0Sstevel@tonic-gate #define	TNF_REF32_IS_RECLAIMABLE(x)	\
94*0Sstevel@tonic-gate 	(TNF_REF32_SPACE(x) == TNF_SPACE_RECLAIMABLE)
95*0Sstevel@tonic-gate #define	TNF_REF32_SIGN_EXTEND(x)	\
96*0Sstevel@tonic-gate 	((((tnf_uint32_t)(x) & TNF_SPACE_SIGN_BIT) == TNF_SPACE_SIGN_BIT) ? \
97*0Sstevel@tonic-gate 		((tnf_ref32_t)((tnf_uint32_t)(x) | TNF_SPACE_MASK)) :   \
98*0Sstevel@tonic-gate 		(x))
99*0Sstevel@tonic-gate 
100*0Sstevel@tonic-gate /* definition of references */
101*0Sstevel@tonic-gate #define	TNF_REF32_TYPE_MASK	0x3
102*0Sstevel@tonic-gate #define	TNF_REF32_T_FULL	0x0
103*0Sstevel@tonic-gate #define	TNF_REF32_T_FWD		TNF_REF32_T_FULL
104*0Sstevel@tonic-gate #define	TNF_REF32_T_PAIR	0x1
105*0Sstevel@tonic-gate #define	TNF_REF32_T_TAG		0x2
106*0Sstevel@tonic-gate #define	TNF_REF32_T_RSVD	0x3
107*0Sstevel@tonic-gate 
108*0Sstevel@tonic-gate #define	TNF_REF32_REF16_MASK	0xffff
109*0Sstevel@tonic-gate 
110*0Sstevel@tonic-gate #define	TNF_REF32_TAG16_SHIFT	16
111*0Sstevel@tonic-gate #define	TNF_REF32_TAG16_MASK	0xffff
112*0Sstevel@tonic-gate 
113*0Sstevel@tonic-gate #define	TNF_REF16_TYPE_MASK	0x3
114*0Sstevel@tonic-gate 
115*0Sstevel@tonic-gate #define	TNF_TAG16_TYPE_MASK	0x3
116*0Sstevel@tonic-gate #define	TNF_TAG16_T_ABS		TNF_REF32_T_PAIR
117*0Sstevel@tonic-gate #define	TNF_TAG16_T_REL		TNF_REF32_T_FWD
118*0Sstevel@tonic-gate 
119*0Sstevel@tonic-gate #define	TNF_NULL		0
120*0Sstevel@tonic-gate 
121*0Sstevel@tonic-gate /* Macros on tnf_ref32_t values: */
122*0Sstevel@tonic-gate 
123*0Sstevel@tonic-gate #define	TNF_REF32_TYPE(x)	\
124*0Sstevel@tonic-gate 	((tnf_uint32_t)(x) & TNF_REF32_TYPE_MASK)
125*0Sstevel@tonic-gate #define	TNF_REF32_VALUE(x)	\
126*0Sstevel@tonic-gate 	((tnf_ref32_t)(((tnf_uint32_t)(x) & ~TNF_REF32_TYPE_MASK) & \
127*0Sstevel@tonic-gate 					~TNF_SPACE_MASK))
128*0Sstevel@tonic-gate 
129*0Sstevel@tonic-gate #define	TNF_REF32_IS_FULL(x)	(TNF_REF32_TYPE(x) == TNF_REF32_T_FULL)
130*0Sstevel@tonic-gate #define	TNF_REF32_IS_FWD(x)	(TNF_REF32_TYPE(x) == TNF_REF32_T_FWD)
131*0Sstevel@tonic-gate #define	TNF_REF32_IS_PAIR(x)	(TNF_REF32_TYPE(x) == TNF_REF32_T_PAIR)
132*0Sstevel@tonic-gate #define	TNF_REF32_IS_TAG(x)	(TNF_REF32_TYPE(x) == TNF_REF32_T_TAG)
133*0Sstevel@tonic-gate #define	TNF_REF32_IS_RSVD(x)	(TNF_REF32_TYPE(x) == TNF_REF32_T_RSVD)
134*0Sstevel@tonic-gate #define	TNF_REF32_IS_NULL(x)	((x) == TNF_NULL)
135*0Sstevel@tonic-gate 
136*0Sstevel@tonic-gate #define	TNF_REF32_REF16(x)	\
137*0Sstevel@tonic-gate 	((tnf_ref16_t)((tnf_uint32_t)(x) & TNF_REF32_REF16_MASK))
138*0Sstevel@tonic-gate 
139*0Sstevel@tonic-gate #define	TNF_REF32_TAG16(x)	\
140*0Sstevel@tonic-gate 	((tnf_ref16_t)(((tnf_uint32_t)(x) >> TNF_REF32_TAG16_SHIFT)	\
141*0Sstevel@tonic-gate 				& TNF_REF32_TAG16_MASK))
142*0Sstevel@tonic-gate 
143*0Sstevel@tonic-gate /* Macros on tnf_ref16_t values: */
144*0Sstevel@tonic-gate 
145*0Sstevel@tonic-gate #define	TNF_REF16_TYPE(x)	\
146*0Sstevel@tonic-gate 	((tnf_uint32_t)(x) & TNF_REF16_TYPE_MASK)
147*0Sstevel@tonic-gate #define	TNF_REF16_VALUE(x)	\
148*0Sstevel@tonic-gate 	((tnf_ref16_t)((tnf_uint32_t)(x) & ~TNF_REF16_TYPE_MASK))
149*0Sstevel@tonic-gate 
150*0Sstevel@tonic-gate #define	TNF_TAG16_TYPE(x)	\
151*0Sstevel@tonic-gate 	((tnf_uint32_t)(x) & TNF_TAG16_TYPE_MASK)
152*0Sstevel@tonic-gate 
153*0Sstevel@tonic-gate #define	TNF_TAG16_IS_REL(x)	(TNF_TAG16_TYPE(x) == TNF_TAG16_T_REL)
154*0Sstevel@tonic-gate #define	TNF_TAG16_IS_ABS(x)	(TNF_TAG16_TYPE(x) == TNF_TAG16_T_ABS)
155*0Sstevel@tonic-gate 
156*0Sstevel@tonic-gate /* The two kinds of values a tag16 can have: */
157*0Sstevel@tonic-gate 
158*0Sstevel@tonic-gate #define	TNF_TAG16_REF16(x)	\
159*0Sstevel@tonic-gate 	((tnf_ref16_t)((tnf_uint32_t)(x) & ~TNF_TAG16_TYPE_MASK))
160*0Sstevel@tonic-gate #define	TNF_TAG16_ABS16(x)	\
161*0Sstevel@tonic-gate 	((tnf_abs16_t)((tnf_uint32_t)(x) & ~TNF_TAG16_TYPE_MASK))
162*0Sstevel@tonic-gate 
163*0Sstevel@tonic-gate /*
164*0Sstevel@tonic-gate  * TNF binary layouts
165*0Sstevel@tonic-gate  */
166*0Sstevel@tonic-gate 
167*0Sstevel@tonic-gate struct tnf_tagged_hdr {
168*0Sstevel@tonic-gate 	tnf_ref32_t	tag;		/* type record */
169*0Sstevel@tonic-gate };
170*0Sstevel@tonic-gate 
171*0Sstevel@tonic-gate struct tnf_array_hdr {
172*0Sstevel@tonic-gate 	tnf_ref32_t	tag;		/* type record */
173*0Sstevel@tonic-gate 	tnf_uint32_t 	self_size;	/* total size */
174*0Sstevel@tonic-gate };
175*0Sstevel@tonic-gate 
176*0Sstevel@tonic-gate struct tnf_type_hdr {
177*0Sstevel@tonic-gate 	tnf_ref32_t	tag;		/* type record */
178*0Sstevel@tonic-gate 	tnf_ref32_t	name;		/* string record */
179*0Sstevel@tonic-gate 	tnf_ref32_t	properties;	/* array of type records */
180*0Sstevel@tonic-gate };
181*0Sstevel@tonic-gate 
182*0Sstevel@tonic-gate struct tnf_struct_type_hdr {
183*0Sstevel@tonic-gate 	tnf_ref32_t	tag;		/* type record */
184*0Sstevel@tonic-gate 	tnf_ref32_t	name;		/* string record */
185*0Sstevel@tonic-gate 	tnf_ref32_t	properties;	/* array of type records */
186*0Sstevel@tonic-gate 	tnf_ref32_t	slot_types;	/* array of type records */
187*0Sstevel@tonic-gate 	tnf_uint32_t	type_size;	/* size of struct */
188*0Sstevel@tonic-gate };
189*0Sstevel@tonic-gate 
190*0Sstevel@tonic-gate struct tnf_array_type_hdr {
191*0Sstevel@tonic-gate 	tnf_ref32_t	tag;		/* type record */
192*0Sstevel@tonic-gate 	tnf_ref32_t	name;		/* string record */
193*0Sstevel@tonic-gate 	tnf_ref32_t	properties;	/* array of type records */
194*0Sstevel@tonic-gate 	tnf_ref32_t	slot_types;	/* array of type records */
195*0Sstevel@tonic-gate 	tnf_uint32_t	header_size;	/* size of array header */
196*0Sstevel@tonic-gate };
197*0Sstevel@tonic-gate 
198*0Sstevel@tonic-gate struct tnf_derived_type_hdr {
199*0Sstevel@tonic-gate 	tnf_ref32_t	tag;		/* type record */
200*0Sstevel@tonic-gate 	tnf_ref32_t	name;		/* string record */
201*0Sstevel@tonic-gate 	tnf_ref32_t	properties;	/* array of type records */
202*0Sstevel@tonic-gate 	tnf_ref32_t	derived_base;	/* type record */
203*0Sstevel@tonic-gate };
204*0Sstevel@tonic-gate 
205*0Sstevel@tonic-gate /*
206*0Sstevel@tonic-gate  * File header, after magic #
207*0Sstevel@tonic-gate  */
208*0Sstevel@tonic-gate 
209*0Sstevel@tonic-gate #define	TNF_FILE_VERSION	1
210*0Sstevel@tonic-gate 
211*0Sstevel@tonic-gate typedef struct tnf_file_header {
212*0Sstevel@tonic-gate 	tnf_ref32_t	tag;
213*0Sstevel@tonic-gate 	tnf_uint32_t	file_version;	/* TNF_FILE_VERSION */
214*0Sstevel@tonic-gate 	tnf_uint32_t	file_header_size;
215*0Sstevel@tonic-gate 	tnf_uint32_t	file_log_size;
216*0Sstevel@tonic-gate 	tnf_uint32_t	block_header_size;
217*0Sstevel@tonic-gate 	tnf_uint32_t	block_size;
218*0Sstevel@tonic-gate 	tnf_uint32_t	directory_size;
219*0Sstevel@tonic-gate 	tnf_uint32_t	block_count;
220*0Sstevel@tonic-gate 	tnf_uint32_t	blocks_valid;
221*0Sstevel@tonic-gate 	/* writer-specific information after this	*/
222*0Sstevel@tonic-gate 	/* zero padding to end of block 		*/
223*0Sstevel@tonic-gate } tnf_file_header_t;
224*0Sstevel@tonic-gate 
225*0Sstevel@tonic-gate /*
226*0Sstevel@tonic-gate  * Block header
227*0Sstevel@tonic-gate  */
228*0Sstevel@tonic-gate 
229*0Sstevel@tonic-gate typedef unsigned char		tnf_byte_lock_t;
230*0Sstevel@tonic-gate 
231*0Sstevel@tonic-gate typedef struct tnf_block_header {
232*0Sstevel@tonic-gate 	tnf_ref32_t		tag;
233*0Sstevel@tonic-gate 	tnf_uint32_t		generation; /* (-1) => tag block */
234*0Sstevel@tonic-gate 	tnf_uint16_t		bytes_valid;
235*0Sstevel@tonic-gate 	tnf_byte_lock_t		A_lock;
236*0Sstevel@tonic-gate 	tnf_byte_lock_t		B_lock;
237*0Sstevel@tonic-gate 	struct tnf_block_header	*next_block; /* release list */
238*0Sstevel@tonic-gate } tnf_block_header_t;
239*0Sstevel@tonic-gate 
240*0Sstevel@tonic-gate /*
241*0Sstevel@tonic-gate  * TNF type names
242*0Sstevel@tonic-gate  */
243*0Sstevel@tonic-gate 
244*0Sstevel@tonic-gate #define	TNF_N_INLINE		"tnf_inline"
245*0Sstevel@tonic-gate #define	TNF_N_TAGGED		"tnf_tagged"
246*0Sstevel@tonic-gate 
247*0Sstevel@tonic-gate #define	TNF_N_SCALAR		"tnf_scalar"
248*0Sstevel@tonic-gate #define	TNF_N_CHAR		"tnf_char"
249*0Sstevel@tonic-gate #define	TNF_N_INT8 		"tnf_int8"
250*0Sstevel@tonic-gate #define	TNF_N_UINT8		"tnf_uint8"
251*0Sstevel@tonic-gate #define	TNF_N_INT16		"tnf_int16"
252*0Sstevel@tonic-gate #define	TNF_N_UINT16		"tnf_uint16"
253*0Sstevel@tonic-gate #define	TNF_N_INT32		"tnf_int32"
254*0Sstevel@tonic-gate #define	TNF_N_UINT32		"tnf_uint32"
255*0Sstevel@tonic-gate #define	TNF_N_INT64		"tnf_int64"
256*0Sstevel@tonic-gate #define	TNF_N_UINT64		"tnf_uint64"
257*0Sstevel@tonic-gate #define	TNF_N_FLOAT32		"tnf_float32"
258*0Sstevel@tonic-gate #define	TNF_N_FLOAT64		"tnf_float64"
259*0Sstevel@tonic-gate 
260*0Sstevel@tonic-gate #define	TNF_N_ARRAY		"tnf_array"
261*0Sstevel@tonic-gate #define	TNF_N_STRING 		"tnf_string"
262*0Sstevel@tonic-gate #define	TNF_N_TYPE_ARRAY	"tnf_type_array"
263*0Sstevel@tonic-gate #define	TNF_N_NAME_ARRAY	"tnf_name_array"
264*0Sstevel@tonic-gate 
265*0Sstevel@tonic-gate #define	TNF_N_ALIGN		"tnf_align"
266*0Sstevel@tonic-gate #define	TNF_N_DERIVED		"tnf_derived"
267*0Sstevel@tonic-gate #define	TNF_N_DERIVED_BASE	"tnf_derived_base"
268*0Sstevel@tonic-gate #define	TNF_N_ELEMENT_TYPE	"tnf_element_type"
269*0Sstevel@tonic-gate #define	TNF_N_HEADER_SIZE	"tnf_header_size"
270*0Sstevel@tonic-gate #define	TNF_N_NAME		"tnf_name"
271*0Sstevel@tonic-gate #define	TNF_N_OPAQUE		"tnf_opaque"
272*0Sstevel@tonic-gate #define	TNF_N_PROPERTIES	"tnf_properties"
273*0Sstevel@tonic-gate #define	TNF_N_SELF_SIZE		"tnf_self_size"
274*0Sstevel@tonic-gate #define	TNF_N_SIZE		"tnf_size"
275*0Sstevel@tonic-gate #define	TNF_N_SLOT_NAMES	"tnf_slot_names"
276*0Sstevel@tonic-gate #define	TNF_N_SLOT_TYPES	"tnf_slot_types"
277*0Sstevel@tonic-gate #define	TNF_N_TAG		"tnf_tag"
278*0Sstevel@tonic-gate #define	TNF_N_TAG_ARG		"tnf_tag_arg"
279*0Sstevel@tonic-gate #define	TNF_N_TYPE_SIZE		"tnf_type_size"
280*0Sstevel@tonic-gate 
281*0Sstevel@tonic-gate #define	TNF_N_STRUCT		"tnf_struct"
282*0Sstevel@tonic-gate 
283*0Sstevel@tonic-gate #define	TNF_N_ARRAY_TYPE	"tnf_array_type"
284*0Sstevel@tonic-gate #define	TNF_N_DERIVED_TYPE	"tnf_derived_type"
285*0Sstevel@tonic-gate #define	TNF_N_SCALAR_TYPE	"tnf_scalar_type"
286*0Sstevel@tonic-gate #define	TNF_N_STRUCT_TYPE	"tnf_struct_type"
287*0Sstevel@tonic-gate #define	TNF_N_TYPE		"tnf_type"
288*0Sstevel@tonic-gate 
289*0Sstevel@tonic-gate /*
290*0Sstevel@tonic-gate  * Reserved names for block and file header information
291*0Sstevel@tonic-gate  */
292*0Sstevel@tonic-gate 
293*0Sstevel@tonic-gate #define	TNF_N_FILE_HEADER	"tnf_file_header"
294*0Sstevel@tonic-gate #define	TNF_N_FILE_VERSION	"file_version"
295*0Sstevel@tonic-gate #define	TNF_N_FILE_HEADER_SIZE	"file_header_size"
296*0Sstevel@tonic-gate #define	TNF_N_FILE_LOGICAL_SIZE	"file_logical_size"
297*0Sstevel@tonic-gate #define	TNF_N_BLOCK_HEADER_SIZE	"block_header_size"
298*0Sstevel@tonic-gate #define	TNF_N_BLOCK_SIZE	"block_size"
299*0Sstevel@tonic-gate #define	TNF_N_DIRECTORY_SIZE	"directory_size"
300*0Sstevel@tonic-gate #define	TNF_N_BLOCK_COUNT	"block_count"
301*0Sstevel@tonic-gate #define	TNF_N_BLOCKS_VALID	"blocks_valid"
302*0Sstevel@tonic-gate 
303*0Sstevel@tonic-gate #define	TNF_N_BLOCK_HEADER	"tnf_block_header"
304*0Sstevel@tonic-gate #define	TNF_N_GENERATION	"generation"
305*0Sstevel@tonic-gate #define	TNF_N_BYTES_VALID	"bytes_valid"
306*0Sstevel@tonic-gate 
307*0Sstevel@tonic-gate /*
308*0Sstevel@tonic-gate  * Reserved names for schedule record information
309*0Sstevel@tonic-gate  */
310*0Sstevel@tonic-gate 
311*0Sstevel@tonic-gate #define	TNF_N_USER_SCHEDULE	"tnf_user_schedule"
312*0Sstevel@tonic-gate #define	TNF_N_KERNEL_SCHEDULE	"tnf_kernel_schedule"
313*0Sstevel@tonic-gate 
314*0Sstevel@tonic-gate #define	TNF_N_PID		"pid"
315*0Sstevel@tonic-gate #define	TNF_N_LWPID		"lwpid"
316*0Sstevel@tonic-gate #define	TNF_N_TID		"tid"
317*0Sstevel@tonic-gate #define	TNF_N_TIME_BASE		"time_base"
318*0Sstevel@tonic-gate #define	TNF_N_TIME_DELTA	"time_delta"
319*0Sstevel@tonic-gate 
320*0Sstevel@tonic-gate /* XXX TODO: kernel type names */
321*0Sstevel@tonic-gate 
322*0Sstevel@tonic-gate #ifdef __cplusplus
323*0Sstevel@tonic-gate }
324*0Sstevel@tonic-gate #endif
325*0Sstevel@tonic-gate 
326*0Sstevel@tonic-gate #endif /* _SYS_TNF_COM_H */
327