Lines Matching refs:frup

154 	frutree_frunode_t *frup;
188 static picl_errno_t handle_chassis_configure(frutree_frunode_t *frup);
658 frutree_frunode_t *frup = NULL;
767 frup = FRUDATA_PTR(hashptr);
770 if (frup == NULL) {
775 (void) pthread_mutex_lock(&frup->mutex);
776 if (frup->dr_in_progress) {
778 (void) pthread_mutex_unlock(&frup->mutex);
782 (void) pthread_mutex_unlock(&frup->mutex);
784 if (update_fru_state(frup, &state_changed) != PICL_SUCCESS) {
790 (void) pthread_mutex_lock(&frup->mutex);
792 if (frup->state == FRU_STATE_CONFIGURED) {
794 dr_arg.data = frup;
795 } else if (frup->state == FRU_STATE_UNCONFIGURED) {
797 dr_arg.data = frup;
799 (void) pthread_mutex_unlock(&frup->mutex);
861 frutree_frunode_t *frup = NULL;
922 frup = FRUDATA_PTR(hashptr);
923 if (frup == NULL) {
930 dr_arg.data = frup;
934 dr_arg.data = frup;
962 frutree_frunode_t *frup = NULL;
991 frup = FRUDATA_PTR(hashptr);
992 if (frup == NULL) {
999 dr_arg.data = frup;
1002 dr_arg.data = frup;
1183 frutree_frunode_t *frup = NULL;
1193 frup = (frutree_frunode_t *)datap->data;
1194 free(frup->name);
1195 (void) pthread_mutex_destroy(&frup->mutex);
1196 (void) pthread_cond_destroy(&frup->cond_cv);
1197 (void) pthread_cond_destroy(&frup->busy_cond_cv);
1198 free(frup);
1473 frutree_frunode_t *frup;
1483 frup = (frutree_frunode_t *)malloc(sizeof (frutree_frunode_t));
1484 if (frup == NULL) {
1492 free(frup);
1498 frup->name = name_copy;
1499 frup->frunodeh = 0;
1500 frup->state = FRU_STATE_UNCONFIGURED;
1501 frup->prev_state = FRU_STATE_UNKNOWN;
1502 frup->cond = FRU_COND_UNKNOWN;
1503 frup->prev_cond = FRU_COND_UNKNOWN;
1504 frup->cpu_node = B_FALSE;
1505 frup->autoconfig_enabled = B_FALSE;
1506 frup->dr_in_progress = B_FALSE;
1507 frup->busy = B_FALSE;
1508 frup->state_mgr = UNKNOWN;
1509 frup->fru_path[0] = '\0';
1510 (void) pthread_mutex_init(&frup->mutex, NULL);
1511 (void) pthread_cond_init(&frup->cond_cv, NULL);
1512 (void) pthread_cond_init(&frup->busy_cond_cv, NULL);
1514 datap->data = frup;
1652 frutree_frunode_t *frup = NULL;
1683 frup = FRUDATA_PTR(datap);
1684 frup->frunodeh = chassish;
2006 update_fru_state(frutree_frunode_t *frup, boolean_t *updated)
2018 if (frup->state_mgr == PLUGIN_PVT) {
2019 if ((rc = ptree_get_propval_by_name(frup->frunodeh,
2026 if (strcmp(fru_state[frup->state], valbuf) != 0) {
2028 frup->prev_state = frup->state;
2030 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
2039 frup->frunodeh,
2045 frup->name, rc);
2050 frup->state = i;
2056 } else if (frup->state_mgr == STATIC_LOC) {
2057 frup->state = FRU_STATE_CONFIGURED;
2061 if ((rc = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
2085 (void) pthread_mutex_lock(&frup->mutex);
2088 if (frup->state != FRU_STATE_CONFIGURED) {
2090 frup->prev_state = frup->state;
2091 frup->state = FRU_STATE_CONFIGURED;
2095 if (frup->state != FRU_STATE_UNCONFIGURED) {
2097 frup->prev_state = frup->state;
2098 frup->state = FRU_STATE_UNCONFIGURED;
2102 if (frup->state != FRU_STATE_UNKNOWN) {
2104 frup->prev_state = frup->state;
2105 frup->state = FRU_STATE_UNKNOWN;
2112 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
2116 PICL_PROP_FRU_TYPE, frup->name, rc);
2122 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
2126 PICL_PROP_STATUS_TIME, frup->name, rc);
2129 (void) pthread_mutex_unlock(&frup->mutex);
2139 update_fru_condition(frutree_frunode_t *frup, boolean_t *updated)
2151 if (frup->state_mgr == PLUGIN_PVT) {
2152 if ((rc = ptree_get_propval_by_name(frup->frunodeh,
2162 if (strcmp(fru_cond[frup->cond], valbuf) != 0) {
2165 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
2169 PICL_PROP_CONDITION_TIME, frup->name,
2172 frup->prev_cond = frup->cond;
2176 frup->cond = i;
2182 } else if (frup->state_mgr == STATIC_LOC) {
2183 frup->cond = FRU_COND_OK;
2187 if ((rc = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
2213 if (frup->cond != FRU_COND_OK) {
2215 frup->prev_cond = frup->cond;
2216 frup->cond = FRU_COND_OK;
2220 if (frup->cond != FRU_COND_FAILING) {
2222 frup->prev_cond = frup->cond;
2223 frup->cond = FRU_COND_FAILING;
2228 if (frup->cond != FRU_COND_FAILED) {
2230 frup->prev_cond = frup->cond;
2231 frup->cond = FRU_COND_FAILED;
2235 if (frup->cond != FRU_COND_UNKNOWN) {
2237 frup->prev_cond = frup->cond;
2238 frup->cond = FRU_COND_UNKNOWN;
2244 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
2248 PICL_PROP_CONDITION_TIME, frup->name, rc);
2263 frutree_frunode_t *frup = NULL;
2276 frup = FRUDATA_PTR(hashptr);
2277 if (frup == NULL) {
2282 (void) pthread_mutex_lock(&frup->mutex);
2283 if (frup->dr_in_progress) {
2284 (void) pthread_mutex_unlock(&frup->mutex);
2285 (void) strncpy((char *)buf, fru_state[frup->state],
2289 (void) pthread_mutex_unlock(&frup->mutex);
2291 if ((rc = update_fru_state(frup, &state_change)) != PICL_SUCCESS) {
2292 FRUTREE_DEBUG2(EVENTS, GET_FRU_STATE_ERR, frup->name, rc);
2294 (void) strncpy((char *)buf, fru_state[frup->state],
2301 (void) pthread_mutex_lock(&frup->mutex);
2303 if (frup->state == FRU_STATE_CONFIGURED) {
2305 dr_arg.data = frup;
2306 } else if (frup->state == FRU_STATE_UNCONFIGURED) {
2308 dr_arg.data = frup;
2310 (void) pthread_mutex_unlock(&frup->mutex);
2316 "dr_ap_state_chage", frup->name, rc);
2323 (void) strncpy((char *)buf, fru_state[frup->state],
2338 frutree_frunode_t *frup = NULL;
2350 frup = FRUDATA_PTR(hashptr);
2351 if (frup == NULL) {
2356 (void) pthread_mutex_lock(&frup->mutex);
2357 if (frup->dr_in_progress) {
2358 (void) pthread_mutex_unlock(&frup->mutex);
2359 (void) strncpy((char *)buf, fru_cond[frup->cond],
2364 (void) pthread_mutex_unlock(&frup->mutex);
2366 if ((rc = update_fru_condition(frup, &cond_changed)) != PICL_SUCCESS) {
2367 FRUTREE_DEBUG2(EVENTS, GET_FRU_COND_ERR, frup->name, rc);
2369 (void) strncpy((char *)buf, fru_cond[frup->cond],
2375 dr_arg.data = frup;
2380 "condition event", frup->name, rc);
2388 (void) strncpy((char *)buf, fru_cond[frup->cond],
2412 probe_platform_tree(frutree_frunode_t *frup, frutree_device_args_t **devp)
2430 if ((refhdl = get_reference_handle(frup->frunodeh)) == 0) {
2437 NULLWRITE, frup->frunodeh, &tblprophdl, &dev_tblhdl)) !=
2455 NULLWRITE, frup->frunodeh, &tblprophdl, &env_tblhdl)) !=
2481 create_fru_children(frutree_frunode_t *frup, frutree_device_args_t device)
2497 (void) snprintf(dir, MAXPATHLEN, "%s%s", TEMP_DIR, frup->name);
2534 if ((rc = picld_pluginutil_parse_config_file(frup->frunodeh,
2543 if ((rc = fru_init(frup)) != PICL_SUCCESS) {
2554 probe_fru(frutree_frunode_t *frup, boolean_t load_drivers)
2563 if (frup == NULL) {
2566 FRUTREE_DEBUG1(EVENTS, "probing :%s", frup->name);
2568 if ((rc = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
2584 (void) probe_platform_tree(frup, &device);
2602 if ((rc = get_fru_path(devfs_path, frup)) !=
2610 rc = fru_init(frup); /* probe its children */
2614 if ((rc = get_fru_path(probe_path, frup)) !=
2622 rc = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_CHILD,
2625 if ((rc = fru_init(frup)) != PICL_SUCCESS) {
2629 if ((rc = probe_for_scsi_frus(frup)) != PICL_SUCCESS) {
2635 if (ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
2657 if ((rc = probe_libdevinfo(frup, &device, load_drivers)) !=
2665 if ((rc = create_fru_children(frup, *device)) != PICL_SUCCESS) {
2675 if ((rc = probe_for_scsi_frus(frup)) != PICL_SUCCESS) {
2700 handle_fru_remove(frutree_frunode_t *frup)
2704 if (frup == NULL) {
2708 if ((rc = ptree_walk_tree_by_class(frup->frunodeh,
2712 (void) ptree_delete_node(frup->frunodeh);
2713 (void) ptree_destroy_node(frup->frunodeh);
2714 if ((rc = hash_remove_entry(frup->frunodeh)) !=
2771 handle_fru_unconfigure(frutree_frunode_t *frup)
2780 if (frup == NULL) {
2785 if (ptree_get_prop_by_name(frup->frunodeh, PICL_PROP_DEVICES,
2792 if (ptree_get_prop_by_name(frup->frunodeh, PICL_PROP_ENV,
2798 if ((rc = ptree_walk_tree_by_class(frup->frunodeh,
2804 retval = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_CHILD,
2840 create_fru_props(frutree_frunode_t *frup)
2850 frup->frunodeh, NULL, fru_state[frup->state])) !=
2853 PICL_PROP_STATE, frup->name, rc);
2859 NULLREAD, NULLWRITE, frup->frunodeh,
2862 PICL_PROP_STATUS_TIME, frup->name, rc);
2865 if ((rc = update_fru_state(frup, &state_change)) != PICL_SUCCESS) {
2866 FRUTREE_DEBUG2(EVENTS, GET_FRU_STATE_ERR, frup->name, rc);
2874 frup->frunodeh, NULL, fru_cond[frup->cond])) !=
2877 PICL_PROP_CONDITION, frup->name, rc);
2881 NULLREAD, NULLWRITE, frup->frunodeh, NULL,
2884 PICL_PROP_CONDITION_TIME, frup->name, rc);
2887 if ((rc = update_fru_condition(frup, &state_change)) != PICL_SUCCESS) {
2888 FRUTREE_DEBUG2(EVENTS, GET_FRU_COND_ERR, frup->name, rc);
2896 frup->frunodeh, NULL, PICL_ADMINLOCK_DISABLED)) !=
2899 PICL_PROP_ADMIN_LOCK, frup->name, rc);
3007 frutree_frunode_t *frup = NULL;
3025 frup = FRUDATA_PTR(hashptr);
3029 if (frup == NULL) {
3033 (void) pthread_mutex_lock(&frup->mutex);
3039 if (frup->state != FRU_STATE_UNCONFIGURED) {
3040 (void) pthread_cond_timedwait(&frup->cond_cv,
3041 &frup->mutex, &to);
3044 if (frup->state != FRU_STATE_UNCONFIGURED) {
3047 (void) pthread_mutex_unlock(&frup->mutex);
3050 (void) pthread_mutex_unlock(&frup->mutex);
3121 handle_fru_configure(frutree_frunode_t *frup)
3126 if (frup == NULL)
3129 if ((rc = probe_fru(frup, B_FALSE)) != PICL_SUCCESS) {
3130 FRUTREE_DEBUG2(EVENTS, PROBE_FRU_ERR, frup->name, rc);
3134 (void) update_fru_condition(frup, &cond_changed);
3137 fru_cond[frup->cond], fru_cond[frup->prev_cond],
3138 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3140 frup->name, PICLEVENT_CONDITION_CHANGE, rc);
3145 fru_state[frup->state], fru_state[frup->prev_state],
3146 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3148 frup->name, PICLEVENT_STATE_CHANGE, rc);
3157 configure_fru(frutree_frunode_t *frup, cfga_flags_t flags)
3170 if (frup == NULL) {
3174 (void) pthread_mutex_lock(&frup->mutex);
3175 if (frup->state == FRU_STATE_CONFIGURED) {
3176 (void) pthread_mutex_unlock(&frup->mutex);
3178 &(frup->name), NULL, NULL, NULL, NULL, flags);
3181 (void) pthread_mutex_unlock(&frup->mutex);
3183 if ((rc = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
3218 PICLEVENTARGVAL_CONFIGURING, fru_state[frup->state],
3219 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3221 frup->name, PICLEVENT_STATE_CHANGE, rc);
3224 (void) pthread_mutex_lock(&frup->mutex);
3225 frup->dr_in_progress = B_TRUE;
3226 (void) pthread_mutex_unlock(&frup->mutex);
3232 &(frup->name), NULL, NULL, NULL, NULL, flags);
3237 frup->name, (end - start));
3241 (void) pthread_mutex_lock(&frup->mutex);
3242 frup->dr_in_progress = B_FALSE;
3243 (void) pthread_mutex_unlock(&frup->mutex);
3245 (void) update_fru_state(frup, &state_change);
3247 fru_state[frup->state], PICLEVENTARGVAL_CONFIGURING,
3248 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3250 frup->name, PICLEVENT_STATE_CHANGE, rc);
3253 (void) update_fru_condition(frup, &state_change);
3256 fru_cond[frup->cond], fru_cond[frup->prev_cond],
3257 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3259 frup->name, PICLEVENT_CONDITION_CHANGE,
3265 (void) pthread_mutex_lock(&frup->mutex);
3266 frup->dr_in_progress = B_FALSE;
3267 frup->prev_state = FRU_STATE_UNCONFIGURED;
3268 frup->state = FRU_STATE_CONFIGURED;
3270 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
3274 PICL_PROP_STATUS_TIME, frup->name, rc);
3276 (void) pthread_mutex_unlock(&frup->mutex);
3278 if ((rc = probe_fru(frup, B_FALSE)) != PICL_SUCCESS) {
3279 FRUTREE_DEBUG2(FRUTREE_INIT, PROBE_FRU_ERR, frup->name, rc);
3282 (void) update_fru_condition(frup, &cond_changed);
3285 fru_cond[frup->cond], fru_cond[frup->prev_cond],
3286 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3288 frup->name, PICLEVENT_CONDITION_CHANGE, rc);
3294 fru_state[frup->state], PICLEVENTARGVAL_CONFIGURING,
3295 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3297 frup->name, PICLEVENT_STATE_CHANGE, rc);
3307 unconfigure_fru(frutree_frunode_t *frup, cfga_flags_t flags)
3316 if (frup == NULL) {
3320 (void) pthread_mutex_lock(&frup->mutex);
3321 if (frup->state == FRU_STATE_UNCONFIGURED) {
3322 (void) pthread_mutex_unlock(&frup->mutex);
3325 (void) pthread_mutex_unlock(&frup->mutex);
3328 PICLEVENTARGVAL_UNCONFIGURING, fru_state[frup->state],
3329 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3331 frup->name, PICLEVENT_STATE_CHANGE, rc);
3334 (void) pthread_mutex_lock(&frup->mutex);
3335 while (frup->busy == B_TRUE) {
3336 (void) pthread_cond_wait(&frup->busy_cond_cv,
3337 &frup->mutex);
3340 frup->dr_in_progress = B_TRUE;
3341 (void) pthread_mutex_unlock(&frup->mutex);
3347 &(frup->name), NULL, NULL, NULL, NULL, flags);
3351 frup->name, (end - start));
3359 &(frup->name), NULL, NULL, NULL, NULL, flags);
3361 (void) pthread_mutex_lock(&frup->mutex);
3362 frup->dr_in_progress = B_FALSE;
3363 (void) pthread_mutex_unlock(&frup->mutex);
3366 (void) update_fru_condition(frup, &state_change);
3369 fru_cond[frup->cond], fru_cond[frup->prev_cond],
3370 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3372 frup->name, PICLEVENT_CONDITION_CHANGE,
3376 (void) update_fru_state(frup, &state_change);
3378 fru_state[frup->state], PICLEVENTARGVAL_UNCONFIGURING,
3379 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3381 frup->name, PICLEVENT_STATE_CHANGE, rc);
3386 (void) pthread_mutex_lock(&frup->mutex);
3388 frup->dr_in_progress = B_FALSE;
3389 frup->prev_state = FRU_STATE_CONFIGURED;
3390 frup->state = FRU_STATE_UNCONFIGURED;
3392 if ((rc = ptree_update_propval_by_name(frup->frunodeh,
3396 PICL_PROP_STATUS_TIME, frup->name, rc);
3399 (void) pthread_cond_broadcast(&frup->cond_cv);
3400 (void) pthread_mutex_unlock(&frup->mutex);
3403 if ((rc = update_fru_condition(frup, &state_change)) != PICL_SUCCESS) {
3405 frup->name, rc);
3409 fru_cond[frup->cond], fru_cond[frup->prev_cond],
3410 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3412 frup->name, PICLEVENT_CONDITION_CHANGE, rc);
3418 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
3420 frup->name, PICLEVENT_STATE_CHANGE, rc);
3431 frutree_frunode_t *frup = NULL;
3466 frup = FRUDATA_PTR(fru_data);
3468 frup->frunodeh = fruh;
3469 frup->cpu_node = locp->cpu_node;
3470 frup->state_mgr = locp->state_mgr;
3471 *child_frupp = frup;
3494 PICL_PROP_FRU_TYPE, frup->name, rc);
3507 (void) update_fru_state(frup, &state_changed);
3511 if ((rc = create_fru_props(frup)) != PICL_SUCCESS) {
4048 init_scsi_slot(frutree_frunode_t *frup, frutree_locnode_t **ptr2locp,
4142 (void) ptree_add_node(frup->frunodeh, nodeh);
4172 frutree_frunode_t *frup = NULL;
4179 frup = arg->frup;
4186 if (parenth != frup->frunodeh)
4228 (void) init_scsi_slot(frup, &locp,
4301 frutree_frunode_t *frup = NULL;
4307 frup = (frutree_frunode_t *)args;
4314 if (parenth != frup->frunodeh)
4343 fru_init(frutree_frunode_t *frup)
4349 if (frup == NULL) {
4353 arg.frup = frup;
4360 if ((rc = do_action(frup->frunodeh, INIT_FRU,
4381 if ((frup->frunodeh == chassish) ||
4383 if ((rc = do_action(frup->frunodeh, POST_EVENTS, NULL)) !=
4390 if (frup->frunodeh == chassish) {
4396 if ((rc = ptree_walk_tree_by_class(frup->frunodeh, PICL_CLASS_LOCATION,
4397 (void *)frup, initiate_connects)) != PICL_SUCCESS) {
4409 frutree_frunode_t *frup = NULL;
4436 frup = FRUDATA_PTR(hashptr);
4438 fru_state[frup->state], fru_state[frup->prev_state],
4441 frup->name, PICLEVENT_STATE_CHANGE, rc);
4444 fru_cond[frup->cond], fru_cond[frup->prev_cond],
4445 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
4447 frup->name, PICLEVENT_CONDITION_CHANGE, rc);
4541 frutree_frunode_t *frup = NULL;
4553 frup = FRUDATA_PTR(hashptr);
4576 if ((rc = fru_init(frup)) != PICL_SUCCESS) {
4592 (void) pthread_mutex_lock(&frup->mutex);
4593 frup->state = FRU_STATE_CONFIGURED;
4594 (void) pthread_mutex_unlock(&frup->mutex);
4832 frutree_frunode_t *frup = NULL, *child_frup = NULL;
4841 frup = (frutree_frunode_t *)args;
4848 if (parenth != frup->frunodeh)
4963 handle_chassis_configure(frutree_frunode_t *frup)
4967 if (frup == NULL) {
4971 (void) pthread_mutex_lock(&frup->mutex);
4972 FRUTREE_DEBUG1(EVENTS, "DR_INCOMING_RES on %s", frup->name);
4973 if (frup->state == FRU_STATE_UNCONFIGURED) {
4974 frup->state = FRU_STATE_CONFIGURING;
4975 (void) pthread_mutex_unlock(&frup->mutex);
4984 (void) pthread_mutex_unlock(&frup->mutex);
4991 (void *)frup, reconfigure_chassis)) != PICL_SUCCESS) {
4998 handle_chassis_unconfigure(frutree_frunode_t *frup)
5002 if (frup->state == FRU_STATE_UNCONFIGURED) {
5020 frup->prev_state = FRU_STATE_CONFIGURED;
5021 frup->state = FRU_STATE_UNCONFIGURED;
5022 (void) handle_fru_unconfigure(frup);
5039 frutree_frunode_t *frup = NULL;
5047 frup = (frutree_frunode_t *)dr_arg->data;
5048 if (frup == NULL) {
5053 if (frup->frunodeh == chassish) {
5054 rc = handle_chassis_configure(frup);
5059 if ((rc = ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
5088 FRUTREE_DEBUG1(EVENTS, "CPU online on %s", frup->name);
5102 FRUTREE_DEBUG1(EVENTS, "DR_INCOMING_RES on %s", frup->name);
5103 if ((rc = configure_fru(frup, flags)) != PICL_SUCCESS) {
5105 frup->name, rc);
5124 frutree_frunode_t *frup = NULL, *child_frup = NULL;
5131 frup = (frutree_frunode_t *)dr_arg->data;
5135 frup->name, PICL_NOSPACE);
5145 frup = (frutree_frunode_t *)dr_arg->data;
5146 if (frup == NULL) {
5149 FRUTREE_DEBUG1(EVENTS, "CPU_OFFLINE on %s", frup->name);
5150 if ((rc = unconfigure_fru(frup, flags)) != PICL_SUCCESS) {
5151 FRUTREE_DEBUG2(EVENTS, UNCONFIG_FAILED_ERR, frup->name, rc);
5155 if ((rc = handle_fru_unconfigure(frup)) != PICL_SUCCESS) {
5157 frup->name, rc);
5162 frup = (frutree_frunode_t *)dr_arg->data;
5163 if (frup == NULL) {
5166 FRUTREE_DEBUG1(EVENTS, "DR_OUTGOING_RES on %s", frup->name);
5167 if (frup->frunodeh == chassish) {
5168 (void) handle_chassis_unconfigure(frup);
5172 if ((rc = unconfigure_fru(frup, flags)) != PICL_SUCCESS) {
5173 FRUTREE_DEBUG2(EVENTS, UNCONFIG_FAILED_ERR, frup->name, rc);
5177 if ((rc = handle_fru_unconfigure(frup)) != PICL_SUCCESS) {
5179 PICLEVENT_DR_REQ, frup->name, rc);
5182 if (ptree_get_propval_by_name(frup->frunodeh, PICL_PROP_PARENT,
5206 frup = (frutree_frunode_t *)dr_arg->data;
5207 if (frup == NULL) {
5210 FRUTREE_DEBUG1(EVENTS, "HANDLE CONFIGURE on %s", frup->name);
5211 handle_fru_configure(frup);
5218 frup = (frutree_frunode_t *)dr_arg->data;
5219 if (frup == NULL) {
5222 FRUTREE_DEBUG1(EVENTS, "HANDLE UNCONFIGURE on %s", frup->name);
5225 fru_state[frup->state], fru_state[frup->prev_state],
5226 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
5228 frup->name, PICLEVENT_STATE_CHANGE, rc);
5232 (void) update_fru_condition(frup, &state_changed);
5235 fru_cond[frup->cond], fru_cond[frup->prev_cond],
5236 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
5238 frup->name, PICLEVENT_CONDITION_CHANGE, rc);
5241 if ((rc = handle_fru_unconfigure(frup)) != PICL_SUCCESS) {
5243 PICLEVENT_DR_AP_STATE_CHANGE, frup->name, rc);
5428 frup = FRUDATA_PTR(hashptr);
5431 if (frup == NULL) {
5447 if ((rc = handle_fru_remove(frup)) != PICL_SUCCESS) {
5454 frup = (frutree_frunode_t *)dr_arg->data;
5455 if (frup == NULL) {
5459 fru_cond[frup->cond], fru_cond[frup->prev_cond],
5460 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
5462 frup->name, PICLEVENT_CONDITION_CHANGE, rc);
5624 frutree_frunode_t *frup = NULL;
5631 frup = (frutree_frunode_t *)c_args;
5638 if (parenth != frup->frunodeh)
5687 frutree_frunode_t *frup = NULL;
5695 frup = FRUDATA_PTR(hashptr);
5697 (void) pthread_mutex_lock(&frup->mutex);
5698 if (frup->dr_in_progress) {
5699 (void) pthread_mutex_unlock(&frup->mutex);
5702 frup->busy = B_TRUE;
5703 (void) pthread_mutex_unlock(&frup->mutex);
5718 (void) update_fru_state(frup, &state_changed);
5719 (void) update_fru_condition(frup, &cond_changed);
5722 fru_state[frup->state],
5723 fru_state[frup->prev_state],
5724 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
5726 frup->name, PICLEVENT_STATE_CHANGE, rc);
5731 fru_cond[frup->cond], fru_cond[frup->prev_cond],
5732 frup->frunodeh, WAIT)) != PICL_SUCCESS) {
5734 frup->name, PICLEVENT_CONDITION_CHANGE,
5738 (void) pthread_mutex_lock(&frup->mutex);
5739 frup->busy = B_FALSE;
5740 (void) pthread_cond_signal(&frup->busy_cond_cv);
5741 (void) pthread_mutex_unlock(&frup->mutex);
5745 if (frup->state != FRU_STATE_CONFIGURED) {
5746 (void) pthread_mutex_lock(&frup->mutex);
5747 frup->busy = B_FALSE;
5748 (void) pthread_cond_signal(&frup->busy_cond_cv);
5749 (void) pthread_mutex_unlock(&frup->mutex);
5754 NULL, (void *)frup, monitor_nodes_under_fru);
5756 (void) pthread_mutex_lock(&frup->mutex);
5757 frup->busy = B_FALSE;
5758 (void) pthread_cond_signal(&frup->busy_cond_cv);
5759 (void) pthread_mutex_unlock(&frup->mutex);
5793 create_children(frutree_frunode_t *frup, char *scsi_loc, char *bus_addr,
5807 if (frup == NULL || scsi_loc == NULL || slot_type == NULL) {
5861 NULLWRITE, nodeh, NULL, frup->fru_path)) !=
5867 if ((rc = ptree_add_node(frup->frunodeh, nodeh)) != PICL_SUCCESS) {
5943 frup->name, PICLEVENT_STATE_CHANGE, rc);
5954 is_location_present_in_subtree(frutree_frunode_t *frup, const char *name,
5962 if (ptree_walk_tree_by_class(frup->frunodeh, PICL_CLASS_LOCATION,