Lines Matching refs:ep

44 fmd_event_nvwrap(fmd_event_impl_t *ep)  in fmd_event_nvwrap()  argument
46 (void) nvlist_remove_all(ep->ev_nvl, FMD_EVN_TTL); in fmd_event_nvwrap()
47 (void) nvlist_remove_all(ep->ev_nvl, FMD_EVN_TOD); in fmd_event_nvwrap()
49 (void) nvlist_add_uint8(ep->ev_nvl, in fmd_event_nvwrap()
50 FMD_EVN_TTL, ep->ev_ttl); in fmd_event_nvwrap()
51 (void) nvlist_add_uint64_array(ep->ev_nvl, in fmd_event_nvwrap()
52 FMD_EVN_TOD, (uint64_t *)&ep->ev_time, 2); in fmd_event_nvwrap()
56 fmd_event_nvunwrap(fmd_event_impl_t *ep, const fmd_timeval_t *tp) in fmd_event_nvunwrap() argument
61 if (nvlist_lookup_uint8(ep->ev_nvl, FMD_EVN_TTL, &ep->ev_ttl) != 0) { in fmd_event_nvunwrap()
62 ep->ev_flags |= FMD_EVF_LOCAL; in fmd_event_nvunwrap()
63 ep->ev_ttl = (uint8_t)fmd.d_xprt_ttl; in fmd_event_nvunwrap()
67 ep->ev_time = *tp; in fmd_event_nvunwrap()
68 else if (nvlist_lookup_uint64_array(ep->ev_nvl, in fmd_event_nvunwrap()
70 ep->ev_time = *(const fmd_timeval_t *)tod; in fmd_event_nvunwrap()
72 fmd_time_sync(&ep->ev_time, &ep->ev_hrt, 1); in fmd_event_nvunwrap()
79 fmd_event_impl_t *ep = fmd_alloc(sizeof (fmd_event_impl_t), FMD_SLEEP); in fmd_event_recreate() local
84 (void) pthread_mutex_init(&ep->ev_lock, NULL); in fmd_event_recreate()
85 ep->ev_refs = 0; in fmd_event_recreate()
87 ep->ev_type = (uint8_t)type; in fmd_event_recreate()
88 ep->ev_state = FMD_EVS_RECEIVED; in fmd_event_recreate()
89 ep->ev_flags = FMD_EVF_REPLAY; in fmd_event_recreate()
90 ep->ev_nvl = nvl; in fmd_event_recreate()
91 ep->ev_data = data; in fmd_event_recreate()
92 ep->ev_log = lp; in fmd_event_recreate()
93 ep->ev_off = off; in fmd_event_recreate()
94 ep->ev_len = len; in fmd_event_recreate()
96 fmd_event_nvunwrap(ep, tp); in fmd_event_recreate()
105 ep->ev_flags |= FMD_EVF_VOLATILE; in fmd_event_recreate()
109 ep->ev_flags &= ~FMD_EVF_REPLAY; in fmd_event_recreate()
118 fmd_time_tod2hrt(hr0, &tod, &ep->ev_time, &ep->ev_hrt); in fmd_event_recreate()
120 fmd_event_nvwrap(ep); in fmd_event_recreate()
121 return ((fmd_event_t *)ep); in fmd_event_recreate()
127 fmd_event_impl_t *ep = fmd_alloc(sizeof (fmd_event_impl_t), FMD_SLEEP); in fmd_event_create() local
134 (void) pthread_mutex_init(&ep->ev_lock, NULL); in fmd_event_create()
135 ep->ev_refs = 0; in fmd_event_create()
137 ep->ev_type = (uint8_t)type; in fmd_event_create()
138 ep->ev_state = FMD_EVS_RECEIVED; in fmd_event_create()
139 ep->ev_flags = FMD_EVF_VOLATILE | FMD_EVF_REPLAY | FMD_EVF_LOCAL; in fmd_event_create()
140 ep->ev_ttl = (uint8_t)fmd.d_xprt_ttl; in fmd_event_create()
141 ep->ev_nvl = nvl; in fmd_event_create()
142 ep->ev_data = data; in fmd_event_create()
143 ep->ev_log = NULL; in fmd_event_create()
144 ep->ev_off = 0; in fmd_event_create()
145 ep->ev_len = 0; in fmd_event_create()
167 fmd_time_hrt2tod(hr0, &tod, hrt, &ep->ev_time); in fmd_event_create()
168 ep->ev_hrt = hrt; in fmd_event_create()
170 fmd_event_nvwrap(ep); in fmd_event_create()
171 return ((fmd_event_t *)ep); in fmd_event_create()
177 fmd_event_impl_t *ep = (fmd_event_impl_t *)e; in fmd_event_destroy() local
179 ASSERT(MUTEX_HELD(&ep->ev_lock)); in fmd_event_destroy()
180 ASSERT(ep->ev_refs == 0); in fmd_event_destroy()
186 if (ep->ev_state == FMD_EVS_RECEIVED) in fmd_event_destroy()
187 ep->ev_state = FMD_EVS_DISCARDED; in fmd_event_destroy()
193 if (ep->ev_state != FMD_EVS_RECEIVED && (ep->ev_flags & ( in fmd_event_destroy()
195 fmd_log_commit(ep->ev_log, e); in fmd_event_destroy()
197 if (ep->ev_log != NULL) { in fmd_event_destroy()
198 if (ep->ev_flags & FMD_EVF_REPLAY) in fmd_event_destroy()
199 fmd_log_decommit(ep->ev_log, e); in fmd_event_destroy()
200 fmd_log_rele(ep->ev_log); in fmd_event_destroy()
207 switch (ep->ev_type) { in fmd_event_destroy()
209 fmd_free(ep->ev_data, sizeof (fmd_modtimer_t)); in fmd_event_destroy()
213 fmd_case_rele(ep->ev_data); in fmd_event_destroy()
216 fmd_ctl_fini(ep->ev_data); in fmd_event_destroy()
219 fmd_topo_rele(ep->ev_data); in fmd_event_destroy()
223 nvlist_free(ep->ev_nvl); in fmd_event_destroy()
225 fmd_free(ep, sizeof (fmd_event_impl_t)); in fmd_event_destroy()
231 fmd_event_impl_t *ep = (fmd_event_impl_t *)e; in fmd_event_hold() local
233 (void) pthread_mutex_lock(&ep->ev_lock); in fmd_event_hold()
234 ep->ev_refs++; in fmd_event_hold()
235 ASSERT(ep->ev_refs != 0); in fmd_event_hold()
236 (void) pthread_mutex_unlock(&ep->ev_lock); in fmd_event_hold()
238 if (ep->ev_type == FMD_EVT_CTL) in fmd_event_hold()
239 fmd_ctl_hold(ep->ev_data); in fmd_event_hold()
245 fmd_event_impl_t *ep = (fmd_event_impl_t *)e; in fmd_event_rele() local
247 if (ep->ev_type == FMD_EVT_CTL) in fmd_event_rele()
248 fmd_ctl_rele(ep->ev_data); in fmd_event_rele()
250 (void) pthread_mutex_lock(&ep->ev_lock); in fmd_event_rele()
251 ASSERT(ep->ev_refs != 0); in fmd_event_rele()
253 if (--ep->ev_refs == 0) in fmd_event_rele()
256 (void) pthread_mutex_unlock(&ep->ev_lock); in fmd_event_rele()
280 fmd_event_impl_t *ep = (fmd_event_impl_t *)e; in fmd_event_transition() local
282 (void) pthread_mutex_lock(&ep->ev_lock); in fmd_event_transition()
285 (void *)ep, ep->ev_state, state)); in fmd_event_transition()
287 if (state <= ep->ev_state) { in fmd_event_transition()
288 (void) pthread_mutex_unlock(&ep->ev_lock); in fmd_event_transition()
292 if (ep->ev_state < FMD_EVS_RECEIVED || ep->ev_state > FMD_EVS_DIAGNOSED) in fmd_event_transition()
293 fmd_panic("illegal transition %u -> %u\n", ep->ev_state, state); in fmd_event_transition()
295 ep->ev_state = state; in fmd_event_transition()
296 (void) pthread_mutex_unlock(&ep->ev_lock); in fmd_event_transition()
308 fmd_event_impl_t *ep = (fmd_event_impl_t *)e; in fmd_event_commit() local
310 (void) pthread_mutex_lock(&ep->ev_lock); in fmd_event_commit()
312 if (ep->ev_state != FMD_EVS_RECEIVED && (ep->ev_flags & ( in fmd_event_commit()
314 fmd_log_commit(ep->ev_log, e); in fmd_event_commit()
316 (void) pthread_mutex_unlock(&ep->ev_lock); in fmd_event_commit()
335 fmd_event_hrtime(fmd_event_t *ep) in fmd_event_hrtime() argument
337 return (((fmd_event_impl_t *)ep)->ev_hrt); in fmd_event_hrtime()
343 fmd_event_impl_t *ep = (fmd_event_impl_t *)e; in fmd_event_match() local
345 if (ep->ev_type != type) in fmd_event_match()
349 return (fmd_strmatch(ep->ev_data, data)); in fmd_event_match()
351 return ((id_t)data == ((fmd_modtimer_t *)ep->ev_data)->mt_id); in fmd_event_match()
353 return (ep->ev_data == data); in fmd_event_match()