summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorrobj <none@none>2008-07-31 19:21:46 -0700
committerrobj <none@none>2008-07-31 19:21:46 -0700
commit664a5ea1dff1ae974e2937d67d09de30f0c098e9 (patch)
tree9e07b8743c0ec0f117a2703c9cc8728fbe7a7f46 /usr/src
parent825ba0f20a74fd9c5d0d1ce2c195da2cc88a7f77 (diff)
downloadillumos-gate-664a5ea1dff1ae974e2937d67d09de30f0c098e9.tar.gz
PSARC 2008/463 Extending HC FMRI scheme to represent sensors/indicators
6635159 libtopo: extend hc scheme to allow for representing sensors and indicators in the topology (missing files)
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/lib/fm/topo/libtopo/common/mktables.sh513
-rw-r--r--usr/src/lib/fm/topo/libtopo/common/topo_list.h12
-rw-r--r--usr/src/lib/fm/topo/libtopo/common/topo_tree.h6
3 files changed, 522 insertions, 9 deletions
diff --git a/usr/src/lib/fm/topo/libtopo/common/mktables.sh b/usr/src/lib/fm/topo/libtopo/common/mktables.sh
new file mode 100644
index 0000000000..fdb3242e34
--- /dev/null
+++ b/usr/src/lib/fm/topo/libtopo/common/mktables.sh
@@ -0,0 +1,513 @@
+#!/bin/sh
+
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+#ident "%Z%%M% %I% %E% SMI"
+
+#
+# Construct translation tables for defines in libtopo.h to translate to readable
+# strings.
+#
+
+if [ $# -ne 1 ]; then
+ echo >&2 "USAGE: $0 <path to libtopo.h>"
+ exit 1
+fi
+
+if [ -r $1 ]; then
+ libtopo_h=$1
+else
+ echo >&2 "USAGE: $0 <path to libtopo.h>"
+ echo >&2 "Make sure libtopo.h exists and is readable"
+ exit 1
+fi
+
+echo "\
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+#pragma ident \"%Z%%M% %I% %E% SMI\"
+
+#include <libtopo.h>
+#include \"topo_mod.h\"
+#include \"topo_subr.h\""
+
+#
+# Sensor types.
+#
+echo "\ntopo_name_trans_t topo_sensor_type_table[] = {"
+
+pattern="#define TOPO_SENSOR_TYPE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_TYPE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+#
+# Units
+#
+echo "\ntopo_name_trans_t topo_units_type_table[] = {"
+
+pattern=" TOPO_SENSOR_UNITS_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_UNITS_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+#
+# Indicator (LED) types
+#
+echo "\ntopo_name_trans_t topo_led_type_table[] = {"
+
+pattern=" TOPO_LED_TYPE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_LED_TYPE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+#
+# Indicator (LED) states
+#
+echo "\ntopo_name_trans_t topo_led_states_table[] = {"
+
+pattern=" TOPO_LED_STATE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_LED_STATE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+#
+# Discrete sensor states
+#
+echo "\ntopo_name_trans_t topo_sensor_states_physical_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_PHYSICAL_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_PHYSICAL_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_platform_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_PLATFORM_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_PLATFORM_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_processor_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_PROCESSOR_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_PROCESSOR_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_power_supply_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_POWER_SUPPLY_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_POWER_SUPPLY_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_power_unit_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_POWER_UNIT_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_POWER_UNIT_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_memory_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_MEMORY_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_MEMORY_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_bay_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_BAY_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_BAY_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_firmware_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_FIRMWARE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_FIRMWARE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_event_log_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_EVENT_LOG_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_EVENT_LOG_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_watchdog1_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_WATCHDOG_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_WATCHDOG_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_system_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_SYSTEM_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_SYSTEM_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_critical_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_CRITICAL_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_CRITICAL_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_button_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_BUTTON_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_BUTTON_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_cable_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_CABLE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_CABLE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_boot_state_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_BOOT_STATE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_BOOT_STATE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_boot_error_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_BOOT_ERROR_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_BOOT_ERROR_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_boot_os_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_BOOT_OS_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_BOOT_OS_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_os_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_OS_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_OS_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_slot_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_SLOT_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_SLOT_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_acpi_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_ACPI_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_ACPI_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_watchdog2_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_WATCHDOG2_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_WATCHDOG2_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_alert_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_ALERT_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_ALERT_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_presence_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_PRESENCE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_PRESENCE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_lan_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_LAN_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_LAN_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_health_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_HEALTH_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_HEALTH_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_battery_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_BATTERY_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_BATTERY_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_audit_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_AUDIT_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_AUDIT_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_version_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_VERSION_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_VERSION_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_fru_state_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_FRU_STATE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_FRU_STATE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_thresh_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_THRESH_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_THRESH_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_usage_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_USAGE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_USAGE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_state_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_STATE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_STATE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_predfail_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_PREDFAIL_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_PREDFAIL_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_limit_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_LIMIT_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_LIMIT_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_perf_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_PERFORMANCE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_PERFORMANCE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_severity_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_SEVERITY_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_SEVERITY_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_presence_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_PRESENCE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_PRESENCE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_avail_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_AVAILABILITY_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_AVAILABILITY_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_status_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_STATUS_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_STATUS_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
+
+echo "\ntopo_name_trans_t topo_sensor_states_generic_acpi_pwr_table[] = {"
+
+pattern="#define TOPO_SENSOR_STATE_GENERIC_ACPI_PWR_STATE_\([A-Z0-9_]*\).*\$"
+replace=" { TOPO_SENSOR_STATE_GENERIC_ACPI_PWR_STATE_\1, \"\1\" },"
+
+cat $libtopo_h | sed -n "s/$pattern/$replace/p" || exit 1
+
+echo "\t{ 0, NULL }
+};"
diff --git a/usr/src/lib/fm/topo/libtopo/common/topo_list.h b/usr/src/lib/fm/topo/libtopo/common/topo_list.h
index 7143490915..e85b1035ff 100644
--- a/usr/src/lib/fm/topo/libtopo/common/topo_list.h
+++ b/usr/src/lib/fm/topo/libtopo/common/topo_list.h
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -20,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -35,11 +34,6 @@
extern "C" {
#endif
-typedef struct topo_list {
- struct topo_list *l_prev;
- struct topo_list *l_next;
-} topo_list_t;
-
#define topo_list_prev(elem) ((void *)(((topo_list_t *)(elem))->l_prev))
#define topo_list_next(elem) ((void *)(((topo_list_t *)(elem))->l_next))
diff --git a/usr/src/lib/fm/topo/libtopo/common/topo_tree.h b/usr/src/lib/fm/topo/libtopo/common/topo_tree.h
index c3ef9b3ea2..92ea405b87 100644
--- a/usr/src/lib/fm/topo/libtopo/common/topo_tree.h
+++ b/usr/src/lib/fm/topo/libtopo/common/topo_tree.h
@@ -78,6 +78,12 @@ struct topo_node {
#define TOPO_NODE_ROOT 0x0002
#define TOPO_NODE_BOUND 0x0004
#define TOPO_NODE_LINKED 0x0008
+/*
+ * Used by topo_node_facility() to determine whether or not this node's
+ * facilities have been enumerated. This is to avoid unecessarily re-running
+ * the facility enumeration method on this node (which can be expensive)
+ */
+#define TOPO_FACILITIES_BOUND 0x0010
typedef struct topo_tree {
topo_list_t tt_list; /* next/prev pointers */