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, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 1999-2001, 2003 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifndef _PSVC_OBJECTS_CLASS_H 28 #define _PSVC_OBJECTS_CLASS_H 29 30 #pragma ident "%Z%%M% %I% %E% SMI" 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif 35 36 /* 37 * Platform Services Framework private definitions 38 */ 39 #include <pthread.h> 40 41 #define NAMELEN 32 42 #define PATHLEN 256 43 44 /* Logical device class */ 45 typedef struct { 46 int32_t class; 47 int32_t subclass; 48 int32_t instance; 49 uint64_t features; 50 uint64_t addr_spec; 51 char state[32]; 52 char previous_state[32]; 53 char fault_id[32]; 54 boolean_t present; 55 boolean_t previous_presence; 56 boolean_t enabled; 57 char label[32]; 58 int32_t (*constructor)(); 59 int32_t (*destructor)(); 60 int32_t (*get_attr)(); 61 int32_t (*set_attr)(); 62 } EObj_t; 63 64 typedef struct { 65 EObj_t ld; /* logical device */ 66 int32_t hw_lo_shut; 67 int32_t lo_warn; /* low warning threshold */ 68 int32_t lo_shut; /* low shutdown threshold */ 69 int32_t opt_temp; 70 int32_t hi_warn; /* high warning threshold */ 71 int32_t hi_shut; /* high shutdown threshold */ 72 int32_t hw_hi_shut; 73 } ETempSensor_t; 74 75 typedef struct { 76 EObj_t ld; /* logical device */ 77 int16_t setpoint; 78 int16_t hysteresis; 79 int16_t loopgain; 80 int16_t loopbias; 81 float temp_differential[PSVC_MAXERRORS]; 82 int16_t temp_differential_index; 83 } EFan_t; 84 85 typedef struct { 86 EObj_t ld; /* logical device */ 87 } ESystem_t; 88 89 typedef struct { 90 EObj_t ld; /* logical device */ 91 int32_t lo_warn; /* low warning threshold */ 92 int32_t lo_shut; /* low shutdown threshold */ 93 int32_t hi_warn; /* high warning threshold */ 94 int32_t hi_shut; /* high shutdown threshold */ 95 } EDigiSensor_t; 96 97 typedef struct { 98 EObj_t ld; /* logical device */ 99 } EDigiControl_t; 100 101 typedef struct { 102 EObj_t ld; /* logical device */ 103 } EBoolSensor_t; 104 105 typedef struct { 106 EObj_t ld; 107 } EGPIO8_t; 108 109 typedef struct { 110 EObj_t ld; /* logical device */ 111 int16_t lit_count; 112 char color[32]; 113 char is_locator[8]; 114 char locator_name[32]; 115 } ELed_t; 116 117 typedef struct { 118 EObj_t ld; /* logical device */ 119 int32_t lo_warn; /* low warning threshold */ 120 int32_t lo_shut; /* low shutdown threshold */ 121 int32_t hi_warn; /* high warning threshold */ 122 int32_t hi_shut; /* high shutdown threshold */ 123 } EFanTach_t; 124 125 typedef struct { 126 EObj_t ld; /* logical device */ 127 char switch_state[32]; 128 } ESwitch_t; 129 130 typedef struct { 131 EObj_t ld; /* logical device */ 132 } EKeySwitch_t; 133 134 typedef struct { 135 EObj_t ld; /* logical device */ 136 int32_t (*get_temperature)(); 137 int32_t (*get_fanspeed)(); 138 int32_t (*get_bit)(); 139 int32_t (*set_bit)(); 140 int32_t (*get_port)(); 141 int32_t (*set_port)(); 142 int32_t (*get_reg)(); 143 int32_t (*set_reg)(); 144 int32_t (*get_output)(); 145 int32_t (*set_output)(); 146 int32_t (*get_input)(); 147 } EPhysDev_t; 148 149 typedef struct { 150 uint8_t cell_type; 151 uint32_t size; 152 int64_t *table; 153 } ETable_t; 154 155 typedef struct { 156 char antecedent_id[NAMELEN]; 157 int32_t ant_key; 158 char dependent_id[NAMELEN]; 159 } EAssoc_t; 160 161 typedef struct { 162 char name[NAMELEN]; 163 uint32_t count; 164 EAssoc_t *table; 165 } EAssocList_t; 166 167 /* structure for translating string to id */ 168 typedef struct { 169 int32_t id; 170 char name[NAMELEN]; 171 } EStringId_t; 172 173 typedef struct { 174 uint32_t controller; 175 uint32_t bus; 176 uint32_t addr; 177 uint32_t port; 178 char path[PATHLEN]; 179 } EDevice_t; 180 181 /* translate name to object (or table) pointer */ 182 typedef struct { 183 char name[NAMELEN]; 184 int32_t key; 185 EObj_t *objp; 186 int32_t type; /* object or table */ 187 } ENamePtr_t; 188 189 typedef struct { 190 ENamePtr_t *obj_tbl; /* object name to pointer translation */ 191 uint32_t obj_count; /* number of objects */ 192 uint32_t nextid; /* next open object slot */ 193 } ETable_Array; 194 195 #define PSVC_OBJ 0 196 #define PSVC_TBL 1 197 #define PSVC_MAX_TABLE_ARRAYS 10 198 199 typedef struct { 200 ETable_Array tbl_arry[PSVC_MAX_TABLE_ARRAYS]; 201 uint32_t total_obj_count; /* Total number of objects */ 202 EStringId_t *othr_tbl; /* assoc string to id translations */ 203 uint32_t othr_count; /* number of assoc strings */ 204 EAssocList_t *assoc_tbl; /* associations between objects */ 205 uint32_t assoc_count; /* number of associations */ 206 EDevice_t *dev_tbl; /* device paths */ 207 uint32_t dev_count; /* number of device paths */ 208 FILE *fp; /* config file */ 209 pthread_mutex_t mutex; /* multi threaded protection */ 210 } EHdl_t; 211 212 /* String lookup table for attributes */ 213 static char *attr_str_tab[] = { 214 "_class", /* 0 */ 215 "Subclass", /* 1 */ 216 "Presence", /* 2 */ 217 "Previous-presence", /* 3 */ 218 "State", /* 4 */ 219 "Previous-state", /* 5 */ 220 "Enabled", /* 6 */ 221 "FaultInformation", /* 7 */ 222 "Features", /* 8 */ 223 "Label", /* 9 */ 224 "Fruid", /* 10 */ 225 "Instance", /* 11 */ 226 "Led-color", /* 12 */ 227 "Lo-warn", /* 13 */ 228 "Lo-shut", /* 14 */ 229 "Hi-warn", /* 15 */ 230 "Hi-shut", /* 16 */ 231 "Opt-temp", /* 17 */ 232 "Hw-hi-shut", /* 18 */ 233 "Hw-lo-shut", /* 19 */ 234 "Setpoint", /* 20 */ 235 "Hysteresis", /* 21 */ 236 "Loopgain", /* 22 */ 237 "Loopbias", /* 23 */ 238 "Temp_differential", /* 24 */ 239 "Temp_differential_index", /* 25 */ 240 "Sensor-value", /* 26 */ 241 "Gpio-value", /* 27 */ 242 "#Bits", /* 28 */ 243 "Control-value", /* 29 */ 244 "Led-state", /* 30 */ 245 "Switch-state", /* 31 */ 246 "Probe-result", /* 32 */ 247 "Table_value", /* 33 */ 248 "Assoc_id", /* 34 */ 249 "Assoc_matches", /* 35 */ 250 "Addr-spec", /* 36 */ 251 "Object-id", /* 37 */ 252 "Led-lit-count", /* 38 */ 253 "FRU-info", /* 39 */ 254 "IsLocator", /* 40 */ 255 "LocatorName" /* 41 */ 256 }; 257 258 int ATTR_STR_TAB_SIZE = sizeof (attr_str_tab) / sizeof (char *); 259 260 #ifdef __cplusplus 261 } 262 #endif 263 264 #endif /* _PSVC_OBJECTS_CLASS_H */ 265