xref: /illumos-gate/usr/src/lib/fm/topo/libtopo/common/topo_subr.h (revision 581cede61ac9c14d8d4ea452562a567189eead78)
1 /*
2  * CDDL HEADER START
3  *
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.
7  *
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.
12  *
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]
18  *
19  * CDDL HEADER END
20  */
21 
22 /*
23  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #ifndef _TOPO_SUBR_H
28 #define	_TOPO_SUBR_H
29 
30 #include <fm/libtopo.h>
31 #include <topo_list.h>
32 
33 #include <pthread.h>
34 #include <stdarg.h>
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
40 typedef struct topo_debug_mode {
41 	char *tdm_name;		/* mode name */
42 	char *tdm_desc;		/* mode description */
43 	int tdm_mode;		/* mode: See below */
44 } topo_debug_mode_t;
45 
46 #define	TOPO_DBOUT_STDERR	0	/* Debug messages to stderr */
47 #define	TOPO_DBOUT_SYSLOG	1	/* Debug messages to syslog */
48 
49 #define	TOPO_DBG_ERR	0x0001	/* enable error handling debug messages */
50 #define	TOPO_DBG_MOD	0x0002	/* enable module debug messages */
51 #define	TOPO_DBG_MODSVC	0x0004	/* enable module services debug messages */
52 #define	TOPO_DBG_WALK	0x0008	/* enable walker debug messages */
53 #define	TOPO_DBG_XML	0x0010	/* enable xml parsing debug messages */
54 #define	TOPO_DBG_ALL	0xffff	/* enable all debug modes */
55 
56 #define	TOPO_STABSTR_INTERNAL	"Internal"	/* private to libtopo */
57 #define	TOPO_STABSTR_PRIVATE	"Private"	/* private to Sun */
58 #define	TOPO_STABSTR_OBSOLETE	"Obsolete"	/* scheduled for removal */
59 #define	TOPO_STABSTR_EXTERNAL	"External"	/* not controlled by Sun */
60 #define	TOPO_STABSTR_UNSTABLE	"Unstable"	/* new or rapidly changing */
61 #define	TOPO_STABSTR_EVOLVING	"Evolving"	/* less rapidly changing */
62 #define	TOPO_STABSTR_STABLE	"Stable"	/* mature interface from Sun */
63 #define	TOPO_STABSTR_STANDARD	"Standard"	/* industry standard */
64 #define	TOPO_STABSTR_UNKNOWN	"Unknown"	/* stability unknown */
65 
66 typedef struct topo_name_trans {
67 	uint32_t	int_value;
68 	const char	*int_name;
69 } topo_name_trans_t;
70 
71 extern topo_name_trans_t topo_sensor_type_table[];
72 extern topo_name_trans_t topo_units_type_table[];
73 extern topo_name_trans_t topo_led_type_table[];
74 extern topo_name_trans_t topo_led_states_table[];
75 extern topo_name_trans_t topo_sensor_states_physical_table[];
76 extern topo_name_trans_t topo_sensor_states_platform_table[];
77 extern topo_name_trans_t topo_sensor_states_processor_table[];
78 extern topo_name_trans_t topo_sensor_states_power_supply_table[];
79 extern topo_name_trans_t topo_sensor_states_power_unit_table[];
80 extern topo_name_trans_t topo_sensor_states_memory_table[];
81 extern topo_name_trans_t topo_sensor_states_bay_table[];
82 extern topo_name_trans_t topo_sensor_states_firmware_table[];
83 extern topo_name_trans_t topo_sensor_states_event_log_table[];
84 extern topo_name_trans_t topo_sensor_states_watchdog1_table[];
85 extern topo_name_trans_t topo_sensor_states_system_table[];
86 extern topo_name_trans_t topo_sensor_states_critical_table[];
87 extern topo_name_trans_t topo_sensor_states_button_table[];
88 extern topo_name_trans_t topo_sensor_states_cable_table[];
89 extern topo_name_trans_t topo_sensor_states_boot_state_table[];
90 extern topo_name_trans_t topo_sensor_states_boot_error_table[];
91 extern topo_name_trans_t topo_sensor_states_boot_os_table[];
92 extern topo_name_trans_t topo_sensor_states_os_table[];
93 extern topo_name_trans_t topo_sensor_states_slot_table[];
94 extern topo_name_trans_t topo_sensor_states_acpi_table[];
95 extern topo_name_trans_t topo_sensor_states_watchdog2_table[];
96 extern topo_name_trans_t topo_sensor_states_alert_table[];
97 extern topo_name_trans_t topo_sensor_states_presence_table[];
98 extern topo_name_trans_t topo_sensor_states_lan_table[];
99 extern topo_name_trans_t topo_sensor_states_health_table[];
100 extern topo_name_trans_t topo_sensor_states_battery_table[];
101 extern topo_name_trans_t topo_sensor_states_audit_table[];
102 extern topo_name_trans_t topo_sensor_states_version_table[];
103 extern topo_name_trans_t topo_sensor_states_fru_state_table[];
104 extern topo_name_trans_t topo_sensor_states_thresh_table[];
105 extern topo_name_trans_t topo_sensor_states_generic_usage_table[];
106 extern topo_name_trans_t topo_sensor_states_generic_state_table[];
107 extern topo_name_trans_t topo_sensor_states_generic_predfail_table[];
108 extern topo_name_trans_t topo_sensor_states_generic_limit_table[];
109 extern topo_name_trans_t topo_sensor_states_generic_perf_table[];
110 extern topo_name_trans_t topo_sensor_states_generic_presence_table[];
111 extern topo_name_trans_t topo_sensor_states_severity_table[];
112 extern topo_name_trans_t topo_sensor_states_generic_avail_table[];
113 extern topo_name_trans_t topo_sensor_states_generic_status_table[];
114 extern topo_name_trans_t topo_sensor_states_generic_acpi_pwr_table[];
115 extern topo_name_trans_t topo_sensor_states_generic_failure_table[];
116 extern topo_name_trans_t topo_sensor_states_generic_ok_table[];
117 
118 extern int topo_rw_read_held(pthread_rwlock_t *);
119 extern int topo_rw_write_held(pthread_rwlock_t *);
120 extern int topo_mutex_held(pthread_mutex_t *);
121 
122 extern void topo_hdl_lock(topo_hdl_t *);
123 extern void topo_hdl_unlock(topo_hdl_t *);
124 
125 extern const char *topo_stability_name(topo_stability_t);
126 extern char *topo_version_num2str(topo_version_t, char *, size_t);
127 extern int topo_version_str2num(const char *, topo_version_t);
128 extern int topo_version_defined(topo_version_t);
129 
130 extern void topo_dprintf(topo_hdl_t *, int, const char *, ...);
131 extern void topo_vdprintf(topo_hdl_t *, int, const char *, const char *,
132     va_list);
133 
134 extern tnode_t *topo_hdl_root(topo_hdl_t *, const char *);
135 extern char *topo_search_path(topo_mod_t *, const char *, const char *);
136 
137 extern void topo_fmristr_build(ssize_t *, char *, size_t, char *, char *,
138     char *);
139 
140 extern int topo_walk_byid(topo_walk_t *wp, const char *name, topo_instance_t);
141 extern int topo_walk_bysibling(topo_walk_t *wp, const char *name,
142     topo_instance_t);
143 
144 extern char *topo_cleanup_auth_str(topo_hdl_t *, const char *);
145 
146 #ifdef __cplusplus
147 }
148 #endif
149 
150 #endif	/* _TOPO_SUBR_H */
151