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