Lines Matching refs:sip
214 struct fmev_subinfo *sip = arg;
215 fmev_shdl_impl_t *ihdl = sip->si_ihdl;
220 if (sip == NULL || sip->si_cb == NULL) {
233 sip->si_cb(ev, class, nvl, sip->si_cbarg);
250 struct fmev_subinfo *sip;
270 if ((sip = fmev_shdl_zalloc(hdl, sizeof (*sip))) == NULL)
273 (void) strncpy(sip->si_pat, pat, sizeof (sip->si_pat));
275 uu_avl_node_init(sip, &sip->si_node, ihdl->sh_pool);
279 if (uu_avl_find(ihdl->sh_avl, sip, NULL, &idx) != NULL) {
281 fmev_shdl_free(hdl, sip, sizeof (*sip));
292 (void) snprintf(sip->si_sid, sizeof (sip->si_sid), "%llx", nsid);
294 sip->si_ihdl = ihdl;
295 sip->si_cb = func;
296 sip->si_cbarg = funcarg;
298 if ((serr = sysevent_evc_xsubscribe(ihdl->sh_binding, sip->si_sid,
299 sip->si_pat, fmev_proxy_cb, sip, 0, ihdl->sh_attr)) != 0) {
303 fmev_shdl_free(hdl, sip, sizeof (*sip));
318 uu_avl_insert(ihdl->sh_avl, sip, idx);
327 fmev_subinfo_fini(fmev_shdl_impl_t *ihdl, struct fmev_subinfo *sip,
332 ASSERT(sip->si_ihdl == ihdl);
334 err = sysevent_evc_unsubscribe(ihdl->sh_binding, sip->si_sid);
338 uu_avl_remove(ihdl->sh_avl, sip);
339 uu_avl_node_fini(sip, &sip->si_node, ihdl->sh_pool);
341 fmev_shdl_free(IHDL2HDL(ihdl), sip, sizeof (*sip));
353 struct fmev_subinfo *sip;
371 if ((sip = uu_avl_find(ihdl->sh_avl, &si, NULL, NULL)) != NULL) {
372 if ((err = fmev_subinfo_fini(ihdl, sip, B_TRUE)) == 0) {
675 struct fmev_subinfo *sip;
677 while ((sip = uu_avl_teardown(ihdl->sh_avl, &cookie)) != NULL)
678 (void) fmev_subinfo_fini(ihdl, sip, B_FALSE);