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]
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
30 #include "group_msg.h"
32 #define HDLSZ CONV_EXPN_FIELD_DEF_PREFIX_SIZE + \
33 MSG_GPH_ZERO_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
34 MSG_GPH_LDSO_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
35 MSG_GPH_FIRST_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
36 MSG_GPH_FILTEE_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
37 MSG_GPH_INITIAL_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
38 MSG_GPH_NOPENDLAZY_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
39 CONV_INV_BUFSIZE + CONV_EXPN_FIELD_DEF_SUFFIX_SIZE
42 * Ensure that Conv_grphdl_flags_buf_t is large enough:
44 * HDLSZ is the real minimum size of the buffer required by conv_grphdl_flags().
45 * However, Conv_grphdl_flags_buf_t uses CONV_GRPHDL_FLAGS_BUFSIZE to set the
46 * buffer size. We do things this way because the definition of HDLSZ uses
47 * information that is not available in the environment of other programs
48 * that include the conv.h header file.
50 #if (CONV_GRPHDL_FLAGS_BUFSIZE != HDLSZ) && !defined(__lint)
51 #define REPORT_BUFSIZE HDLSZ
52 #include "report_bufsize.h"
53 #error "CONV_GRPHDL_FLAGS_BUFSIZE does not match HDLSZ"
57 * String conversion routine for Grp_hdl flags.
60 conv_grphdl_flags(uint_t flags
, Conv_grphdl_flags_buf_t
*grphdl_flags_buf
)
62 static const Val_desc vda
[] = {
63 { GPH_PUBLIC
, MSG_GPH_PUBLIC
},
64 { GPH_PRIVATE
, MSG_GPH_PRIVATE
},
65 { GPH_ZERO
, MSG_GPH_ZERO
},
66 { GPH_LDSO
, MSG_GPH_LDSO
},
67 { GPH_FIRST
, MSG_GPH_FIRST
},
68 { GPH_FILTEE
, MSG_GPH_FILTEE
},
69 { GPH_INITIAL
, MSG_GPH_INITIAL
},
72 static CONV_EXPN_FIELD_ARG conv_arg
= {
73 NULL
, sizeof (grphdl_flags_buf
->buf
) };
76 return (MSG_ORIG(MSG_GBL_NULL
));
78 conv_arg
.buf
= grphdl_flags_buf
->buf
;
79 conv_arg
.oflags
= conv_arg
.rflags
= flags
;
80 (void) conv_expn_field(&conv_arg
, vda
, 0);
82 return ((const char *)grphdl_flags_buf
->buf
);
85 #define DESCSZ CONV_EXPN_FIELD_DEF_PREFIX_SIZE + \
86 MSG_GPD_DLSYM_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
87 MSG_GPD_RELOC_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
88 MSG_GPD_ADDEPS_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
89 MSG_GPD_PARENT_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
90 MSG_GPD_FILTER_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
91 MSG_GPD_PROMOTE_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
92 MSG_GPD_REMOVE_SIZE + CONV_EXPN_FIELD_DEF_SEP_SIZE + \
93 CONV_INV_BUFSIZE + CONV_EXPN_FIELD_DEF_SUFFIX_SIZE
96 * Ensure that Conv_grpdesc_flags_buf_t is large enough:
98 * DESCSZ is the real min size of the buffer required by conv_grpdesc_flags().
99 * However, Conv_grpdesc_flags_buf_t uses CONV_GRPDESC_FLAGS_BUFSIZE to set the
100 * buffer size. We do things this way because the definition of DESCSZ uses
101 * information that is not available in the environment of other programs
102 * that include the conv.h header file.
104 #if (CONV_GRPDESC_FLAGS_BUFSIZE != DESCSZ) && !defined(__lint)
105 #define REPORT_BUFSIZE DESCSZ
106 #include "report_bufsize.h"
107 #error "CONV_GRPDESC_FLAGS_BUFSIZE does not match DESCSZ"
111 * String conversion routine for Grp_desc flags.
114 conv_grpdesc_flags(uint_t flags
, Conv_grpdesc_flags_buf_t
*grpdesc_flags_buf
)
116 static const Val_desc vda
[] = {
117 { GPD_DLSYM
, MSG_GPD_DLSYM
},
118 { GPD_RELOC
, MSG_GPD_RELOC
},
119 { GPD_ADDEPS
, MSG_GPD_ADDEPS
},
120 { GPD_PARENT
, MSG_GPD_PARENT
},
121 { GPD_FILTER
, MSG_GPD_FILTER
},
122 { GPD_REMOVE
, MSG_GPD_REMOVE
},
125 static CONV_EXPN_FIELD_ARG conv_arg
= {
126 NULL
, sizeof (grpdesc_flags_buf
->buf
) };
129 return (MSG_ORIG(MSG_GBL_NULL
));
131 conv_arg
.buf
= grpdesc_flags_buf
->buf
;
132 conv_arg
.oflags
= conv_arg
.rflags
= flags
;
133 (void) conv_expn_field(&conv_arg
, vda
, 0);
135 return ((const char *)grpdesc_flags_buf
->buf
);