xref: /illumos-gate/usr/src/lib/fm/topo/libtopo/common/topo_subr.h (revision 69a119caa6570c7077699161b7c28b6ee9f8b0f4)
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 (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
24  */
25 
26 #ifndef _TOPO_SUBR_H
27 #define	_TOPO_SUBR_H
28 
29 #include <fm/libtopo.h>
30 #include <topo_list.h>
31 
32 #include <pthread.h>
33 #include <stdarg.h>
34 
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38 
39 typedef struct topo_debug_mode {
40 	char *tdm_name;		/* mode name */
41 	char *tdm_desc;		/* mode description */
42 	int tdm_mode;		/* mode: See below */
43 } topo_debug_mode_t;
44 
45 #define	TOPO_DBOUT_STDERR	0	/* Debug messages to stderr */
46 #define	TOPO_DBOUT_SYSLOG	1	/* Debug messages to syslog */
47 
48 #define	TOPO_DBG_ERR	0x0001	/* enable error handling debug messages */
49 #define	TOPO_DBG_MOD	0x0002	/* enable module debug messages */
50 #define	TOPO_DBG_MODSVC	0x0004	/* enable module services debug messages */
51 #define	TOPO_DBG_WALK	0x0008	/* enable walker debug messages */
52 #define	TOPO_DBG_XML	0x0010	/* enable xml parsing debug messages */
53 #define	TOPO_DBG_FORCE	0x0020	/* use DINFOFORCE snapshot for topology */
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 void topo_hdl_lock(topo_hdl_t *);
119 extern void topo_hdl_unlock(topo_hdl_t *);
120 
121 extern const char *topo_stability_name(topo_stability_t);
122 extern char *topo_version_num2str(topo_version_t, char *, size_t);
123 extern int topo_version_str2num(const char *, topo_version_t);
124 extern int topo_version_defined(topo_version_t);
125 
126 extern void topo_dprintf(topo_hdl_t *, int, const char *, ...);
127 extern void topo_vdprintf(topo_hdl_t *, int, const char *, const char *,
128     va_list);
129 
130 extern tnode_t *topo_hdl_root(topo_hdl_t *, const char *);
131 extern char *topo_search_path(topo_mod_t *, const char *, const char *);
132 
133 extern void topo_fmristr_build(ssize_t *, char *, size_t, char *, char *,
134     char *);
135 
136 extern int topo_walk_byid(topo_walk_t *wp, const char *name, topo_instance_t);
137 extern int topo_walk_bysibling(topo_walk_t *wp, const char *name,
138     topo_instance_t);
139 
140 extern char *topo_cleanup_auth_str(topo_hdl_t *, const char *);
141 
142 #ifdef __cplusplus
143 }
144 #endif
145 
146 #endif	/* _TOPO_SUBR_H */
147