8354 sync regcomp(3C) with upstream (fix make catalog)
[unleashed/tickless.git] / usr / src / uts / sun4u / sys / envmon.h
blobcc6e2c0a7dd5ce0e2025d5427ab729895098d888
1 /*
2 * CDDL HEADER START
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.
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.
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]
19 * CDDL HEADER END
23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
27 #ifndef _SYS_ENVMON_H
28 #define _SYS_ENVMON_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
36 #include <sys/ioccom.h>
39 * environmental monitoring ioctls
41 * there are two types of environmental monitor:
42 * sensors - these provide a value for the environmental property
43 * indicators - these provide a status of "within range" or "out of range"
45 * for any given environmental property, a particular platform is likely
46 * to support either a sensor or an indicator
48 * a reserved value is used to signify that a particular sensor value is
49 * not available
52 /* reserved values to signify "value unavailable" */
53 #define ENVMON_VAL_UNAVAILABLE ((int16_t)(-32768))
56 * The ability of a sensor or indicator to deliver a value is encapsulated
57 * in the sensor_status field.
58 * The following sensor_status bit fields are defined
60 #define ENVMON_SENSOR_OK 0 /* this one's a value */
61 #define ENVMON_NOT_PRESENT 1
62 #define ENVMON_INACCESSIBLE 2 /* e.g. i2c bus problem */
65 * Some drivers may implement the older lomv interface in addition to
66 * the ioctls defined here. To avoid a clash with values from older
67 * interfaces, ioctls defined here start high in the available range.
69 #define ENVMON_BASE 200
71 #define ENVMONIOCSYSINFO _IOR('a', ENVMON_BASE + 0, envmon_sysinfo_t)
72 #define ENVMONIOCVOLTSENSOR _IOWR('a', ENVMON_BASE + 1, envmon_sensor_t)
73 #define ENVMONIOCAMPSENSOR _IOWR('a', ENVMON_BASE + 2, envmon_sensor_t)
74 #define ENVMONIOCTEMPSENSOR _IOWR('a', ENVMON_BASE + 3, envmon_sensor_t)
75 #define ENVMONIOCFAN _IOWR('a', ENVMON_BASE + 4, envmon_fan_t)
76 #define ENVMONIOCVOLTIND _IOWR('a', ENVMON_BASE + 5, envmon_indicator_t)
77 #define ENVMONIOCAMPIND _IOWR('a', ENVMON_BASE + 6, envmon_indicator_t)
78 #define ENVMONIOCTEMPIND _IOWR('a', ENVMON_BASE + 7, envmon_indicator_t)
79 #define ENVMONIOCFANIND _IOWR('a', ENVMON_BASE + 8, envmon_indicator_t)
80 #define ENVMONIOCGETLED _IOWR('a', ENVMON_BASE + 9, envmon_led_info_t)
81 #define ENVMONIOCSETLED _IOW('a', ENVMON_BASE + 10, envmon_led_ctl_t)
82 #define ENVMONIOCHPU _IOWR('a', ENVMON_BASE + 11, envmon_hpu_t)
83 #define ENVMONIOCGETKEYSW _IOR('a', ENVMON_BASE + 12, envmon_keysw_pos_t)
84 #define ENVMONIOCGETALARM \
85 _IOWR('a', ENVMON_BASE + 13, envmon_alarm_info_t)
86 #define ENVMONIOCSETALARM _IOWR('a', ENVMON_BASE + 14, envmon_alarm_ctl_t)
87 #define ENVMONIOCCHASSISSERIALNUM \
88 _IOR('a', ENVMON_BASE + 15, envmon_chassis_t)
90 /* field length for text identifiers */
91 #define ENVMON_MAXNAMELEN 32
93 typedef struct {
94 char name[ENVMON_MAXNAMELEN];
95 } envmon_handle_t;
98 * Some structures include threshold fields.
99 * Where a particular threshold is not defined for a given sensor,
100 * the reserved value ENVMON_VAL_UNAVAILABLE is returned.
102 typedef struct {
103 int16_t warning;
104 int16_t shutdown;
105 int16_t poweroff;
106 } envmon_thresholds_t;
109 * id identifies the fru to be accessed.
110 * next_id returns the id for the next component of the type implied by
111 * the ioctl command. If there are no more frus in this sequence,
112 * next_id is set to an empty string.
113 * If id is set to an empty string on entry, next_id returns the first id.
114 * In this case, sensor_status will be returned as ENVMON_NOT_PRESENT.
116 typedef struct {
117 envmon_handle_t id;
118 uint16_t sensor_status;
119 int16_t value; /* sensor reading */
120 envmon_thresholds_t lowthresholds;
121 envmon_thresholds_t highthresholds;
122 envmon_handle_t next_id;
123 } envmon_sensor_t;
125 typedef struct {
126 envmon_handle_t id;
127 uint16_t sensor_status;
128 uint16_t condition; /* 0 = within limits */
129 envmon_handle_t next_id;
130 } envmon_indicator_t;
132 typedef struct {
133 envmon_handle_t id;
134 uint16_t sensor_status;
135 uint16_t speed;
136 char units[ENVMON_MAXNAMELEN];
137 envmon_thresholds_t lowthresholds;
138 envmon_handle_t next_id;
139 } envmon_fan_t;
142 * Values for led_state
144 #define ENVMON_LED_OFF 0
145 #define ENVMON_LED_ON 1
146 #define ENVMON_LED_BLINKING 2
147 #define ENVMON_LED_FLASHING 3
150 * Values for the hue of the leds
152 #define ENVMON_LED_CLR_NONE ((int8_t)(-1))
153 #define ENVMON_LED_CLR_ANY 0
154 #define ENVMON_LED_CLR_WHITE 1
155 #define ENVMON_LED_CLR_BLUE 2
156 #define ENVMON_LED_CLR_GREEN 3
157 #define ENVMON_LED_CLR_AMBER 4
158 #define ENVMON_LED_CLR_RED 5
160 typedef struct {
161 envmon_handle_t id;
162 uint16_t sensor_status;
163 int8_t led_state;
164 int8_t led_color;
165 envmon_handle_t next_id;
166 } envmon_led_info_t;
168 typedef struct {
169 envmon_handle_t id;
170 int8_t led_state;
171 } envmon_led_ctl_t;
174 * Values for alarm_state
176 #define ENVMON_ALARM_OFF 0
177 #define ENVMON_ALARM_ON 1
179 typedef struct {
180 envmon_handle_t id;
181 uint16_t sensor_status;
182 int8_t alarm_state;
183 envmon_handle_t next_id;
184 } envmon_alarm_info_t;
186 typedef struct {
187 envmon_handle_t id;
188 int8_t alarm_state;
189 } envmon_alarm_ctl_t;
192 * Values for fru_status
194 #define ENVMON_FRU_NOT_PRESENT 0
195 #define ENVMON_FRU_PRESENT 1
196 #define ENVMON_FRU_FAULT 2
197 #define ENVMON_FRU_DOWNLOAD 3 /* flash update or download active */
199 typedef struct {
200 envmon_handle_t id;
201 uint8_t sensor_status;
202 uint8_t fru_status;
203 envmon_handle_t next_id;
204 } envmon_hpu_t;
207 * env_sysinto_t is used to return limits on various item types
209 typedef struct {
210 uint16_t maxVoltSens; /* max number of voltage sensors */
211 uint16_t maxVoltInd; /* max number of voltage indicators */
212 uint16_t maxAmpSens; /* max number of current sensors */
213 uint16_t maxAmpInd; /* max number of circuit breakers */
214 uint16_t maxTempSens; /* max number of temperature sensors */
215 uint16_t maxTempInd; /* max number of temp'r indicators */
216 uint16_t maxFanSens; /* max number of fan speed sensors */
217 uint16_t maxFanInd; /* max number of fan indicators */
218 uint16_t maxLED; /* max number of LEDs */
219 uint16_t maxHPU; /* max number of Hot Pluggable Units */
220 } envmon_sysinfo_t;
223 * envmon_keysw_t is used to return the current value of the
224 * keyswitch (if fitted)
226 typedef enum envmon_keysw_pos {
227 ENVMON_KEYSW_POS_UNKNOWN = 0,
228 ENVMON_KEYSW_POS_NORMAL,
229 ENVMON_KEYSW_POS_DIAG,
230 ENVMON_KEYSW_POS_LOCKED,
231 ENVMON_KEYSW_POS_OFF
232 } envmon_keysw_pos_t;
235 * envmon_chassis_t is used to retuen the chassis serial number
237 typedef struct {
238 char serial_number[ENVMON_MAXNAMELEN];
239 } envmon_chassis_t;
241 #ifdef __cplusplus
243 #endif
245 #endif /* _SYS_ENVMON_H */