diff options
author | robj <none@none> | 2008-07-31 19:21:46 -0700 |
---|---|---|
committer | robj <none@none> | 2008-07-31 19:21:46 -0700 |
commit | 664a5ea1dff1ae974e2937d67d09de30f0c098e9 (patch) | |
tree | 9e07b8743c0ec0f117a2703c9cc8728fbe7a7f46 /usr/src | |
parent | 825ba0f20a74fd9c5d0d1ce2c195da2cc88a7f77 (diff) | |
download | illumos-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.sh | 513 | ||||
-rw-r--r-- | usr/src/lib/fm/topo/libtopo/common/topo_list.h | 12 | ||||
-rw-r--r-- | usr/src/lib/fm/topo/libtopo/common/topo_tree.h | 6 |
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 */ |