Home | History | Annotate | Download | only in common
      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