Lines Matching refs:ap

81 	fmd_asru_t *ap = fmd_zalloc(sizeof (fmd_asru_t), FMD_SLEEP);
84 (void) pthread_mutex_init(&ap->asru_lock, NULL);
85 (void) pthread_cond_init(&ap->asru_cv, NULL);
87 ap->asru_name = fmd_strdup(name, FMD_SLEEP);
89 (void) nvlist_xdup(fmri, &ap->asru_fmri, &fmd.d_nva);
90 ap->asru_root = fmd_strdup(ahp->ah_dirpath, FMD_SLEEP);
91 ap->asru_uuid = fmd_strdup(uuid, FMD_SLEEP);
92 ap->asru_uuidlen = ap->asru_uuid ? strlen(ap->asru_uuid) : 0;
93 ap->asru_refs = 1;
97 ap->asru_flags |= FMD_ASRU_INTERNAL;
99 return (ap);
103 fmd_asru_destroy(fmd_asru_t *ap)
105 ASSERT(MUTEX_HELD(&ap->asru_lock));
106 ASSERT(ap->asru_refs == 0);
108 nvlist_free(ap->asru_event);
109 fmd_strfree(ap->asru_name);
110 nvlist_free(ap->asru_fmri);
111 fmd_strfree(ap->asru_root);
112 fmd_free(ap->asru_uuid, ap->asru_uuidlen + 1);
113 fmd_free(ap, sizeof (fmd_asru_t));
117 fmd_asru_hash_insert(fmd_asru_hash_t *ahp, fmd_asru_t *ap)
119 uint_t h = fmd_asru_strhash(ahp, ap->asru_name);
122 ap->asru_next = ahp->ah_hash[h];
123 ahp->ah_hash[h] = ap;
128 fmd_asru_hold(fmd_asru_t *ap)
130 (void) pthread_mutex_lock(&ap->asru_lock);
131 ap->asru_refs++;
132 ASSERT(ap->asru_refs != 0);
133 (void) pthread_mutex_unlock(&ap->asru_lock);
134 return (ap);
145 fmd_asru_t *ap;
151 for (ap = ahp->ah_hash[h]; ap != NULL; ap = ap->asru_next) {
152 if (fmd_asru_strcmp(ahp, ap->asru_name, name))
156 if (ap != NULL)
157 (void) fmd_asru_hold(ap);
161 return (ap);
309 fmd_asru_t *ap = alp->al_asru;
311 (void) pthread_mutex_lock(&ap->asru_lock);
312 ap->asru_refs++;
315 (void) pthread_mutex_unlock(&ap->asru_lock);
319 static void fmd_asru_destroy(fmd_asru_t *ap);
325 fmd_asru_t *ap = alp->al_asru;
327 (void) pthread_mutex_lock(&ap->asru_lock);
331 ASSERT(ap->asru_refs != 0);
332 if (--ap->asru_refs == 0)
333 fmd_asru_destroy(ap);
335 (void) pthread_mutex_unlock(&ap->asru_lock);
361 fmd_asru_t *ap;
399 if ((ap = fmd_asru_hash_lookup(ahp, name)) == NULL) {
400 ap = fmd_asru_create(ahp, al_uuid, name, got_asru ? asru :
402 fmd_asru_hash_insert(ahp, ap);
404 nvlist_free(ap->asru_event);
405 (void) nvlist_xdup(nvl, &ap->asru_event, &fmd.d_nva);
411 fmd_list_append(&ap->asru_list, (fmd_list_t *)alp);
412 alp->al_asru = ap;
423 (void) pthread_mutex_lock(&ap->asru_lock);
426 ap->asru_case = alp->al_case = cp;
429 ap->asru_flags |= FMD_ASRU_INVISIBLE;
431 ap->asru_flags |= FMD_ASRU_VALID;
432 (void) pthread_cond_broadcast(&ap->asru_cv);
433 (void) pthread_mutex_unlock(&ap->asru_lock);
447 fmd_asru_t *ap;
539 ap = alp->al_asru;
549 ap->asru_flags |= FMD_ASRU_PRESENT;
578 ap->asru_flags |= FMD_ASRU_RECREATED;
581 ap->asru_flags |= FMD_ASRU_FAULTY;
585 ap->asru_flags |= FMD_ASRU_UNUSABLE;
597 (void *)ap, _fmd_asru_snames[ap->asru_flags & FMD_ASRU_STATE]));
682 fmd_asru_hash_replay_asru(fmd_asru_t *ap, void *data)
688 if (ap->asru_event != NULL && (ap->asru_flags & (FMD_ASRU_STATE |
692 "replaying fault event for %s", ap->asru_name);
694 (void) nvlist_xdup(ap->asru_event, &nvl, &fmd.d_nva);
698 ((fmd_case_impl_t *)ap->asru_case)->ci_uuid);
878 fmd_asru_t *ap, **aps, **app;
887 for (ap = ahp->ah_hash[i]; ap != NULL; ap = ap->asru_next)
888 *app++ = fmd_asru_hold(ap);
1027 fmd_asru_t *ap;
1030 ap = fmd_asru_hash_lookup(ahp, name);
1033 return (ap);
1091 fmd_asru_hash_release(fmd_asru_hash_t *ahp, fmd_asru_t *ap)
1093 (void) pthread_mutex_lock(&ap->asru_lock);
1095 ASSERT(ap->asru_refs != 0);
1096 if (--ap->asru_refs == 0)
1097 fmd_asru_destroy(ap);
1099 (void) pthread_mutex_unlock(&ap->asru_lock);
1150 fmd_asru_t *ap;
1212 ap = alp->al_asru;
1213 (void) pthread_mutex_lock(&ap->asru_lock);
1214 fmd_list_delete(&ap->asru_list, alp);
1215 if (ap->asru_list.l_next == NULL) {
1222 h = fmd_asru_strhash(ahp, ap->asru_name);
1227 if (ap2 == ap) {
1234 (void) pthread_mutex_unlock(&ap->asru_lock);
1506 fmd_asru_t *ap = alp->al_asru;
1509 boolean_t message = (ap->asru_flags & FMD_ASRU_INVISIBLE) == 0;
1520 ASSERT(MUTEX_HELD(&ap->asru_lock));
1531 lp = fmd_log_open(ap->asru_root, alp->al_uuid, FMD_LOG_ASRU);
1561 fmd_asru_t *ap = alp->al_asru;
1567 (void) pthread_mutex_lock(&ap->asru_lock);
1574 (void) pthread_mutex_unlock(&ap->asru_lock);
1578 ap->asru_flags |= sflag;
1584 (void) pthread_cond_broadcast(&ap->asru_cv);
1585 (void) pthread_mutex_unlock(&ap->asru_lock);
1592 fmd_asru_t *ap = alp->al_asru;
1599 (void) pthread_mutex_lock(&ap->asru_lock);
1611 (void) pthread_cond_broadcast(&ap->asru_cv);
1613 (void) pthread_mutex_unlock(&ap->asru_lock);
1620 ap->asru_flags &= ~sflag;
1625 for (nalp = fmd_list_next(&ap->asru_list); nalp != NULL;
1629 ap->asru_flags &= ~sflag;
1637 (void) pthread_cond_broadcast(&ap->asru_cv);
1638 (void) pthread_mutex_unlock(&ap->asru_lock);
1647 fmd_asru_t *ap = alp->al_asru;
1649 (void) pthread_mutex_lock(&ap->asru_lock);
1651 (void) pthread_cond_broadcast(&ap->asru_cv);
1652 (void) pthread_mutex_unlock(&ap->asru_lock);
1733 fmd_asru_getstate(fmd_asru_t *ap)
1739 if (!(ap->asru_flags & FMD_ASRU_INTERNAL)) {
1746 if (!(ap->asru_flags & FMD_ASRU_PROXY) ||
1747 (!(ap->asru_flags & FMD_ASRU_PROXY_EXTERNAL) &&
1748 (nvlist_lookup_string(ap->asru_fmri, FM_FMRI_SCHEME,
1753 p = fmd_fmri_present(ap->asru_fmri);
1755 if (p == 0 || (p < 0 && !(ap->asru_flags & FMD_ASRU_PROXY) ||
1756 !(ap->asru_flags & FMD_ASRU_PRESENT)))
1764 st = ap->asru_flags & (FMD_ASRU_FAULTY | FMD_ASRU_UNUSABLE);
1765 if (!(ap->asru_flags & FMD_ASRU_PROXY) ||
1766 (ap->asru_flags & FMD_ASRU_PROXY_WITH_ASRU)) {
1767 us = fmd_fmri_unusable(ap->asru_fmri);