Lines Matching defs:xr

478 cmd_xr_write(fmd_hdl_t *hdl, cmd_xr_t *xr)
481 xr->xr_clcode, fmd_case_uuid(hdl, xr->xr_case));
483 fmd_buf_write(hdl, xr->xr_case, "redelivery", xr,
509 cmd_xr_t *xr = fmd_hdl_zalloc(hdl, sizeof (cmd_xr_t),
515 err |= nvlist_lookup_uint64(nvl, FM_EREPORT_ENA, &xr->xr_ena);
517 err |= cmd_xr_fill(hdl, nvl, xr, clcode);
519 err |= cmd_xr_pn_cache_fill(hdl, nvl, xr, cpu, clcode);
525 fmd_hdl_free(hdl, xr, sizeof (cmd_xr_t));
529 xr->xr_cpu = cpu;
530 xr->xr_cpuid = cpu->cpu_cpuid;
531 xr->xr_clcode = clcode;
532 xr->xr_case = cmd_case_create(hdl, &cpu->cpu_header,
534 fmd_case_setprincipal(hdl, xr->xr_case, ep);
537 cmd_fmri_init(hdl, &xr->xr_rsrc, rsrc, "%s_rsrc",
538 fmd_case_uuid(hdl, xr->xr_case));
541 cmd_xr_write(hdl, xr);
542 return (xr);
546 cmd_xr_reschedule(fmd_hdl_t *hdl, cmd_xr_t *xr, uint_t hdlrid)
549 fmd_hdl_debug(hdl, "scheduling redelivery of %llx with xr %p\n",
550 xr->xr_clcode, xr);
552 xr->xr_hdlrid = hdlrid;
553 xr->xr_hdlr = cmd_xr_id2hdlr(hdl, hdlrid);
555 xr->xr_id = fmd_timer_install(hdl, (void *)CMD_TIMERTYPE_CPU_XR_WAITER,
558 if (xr->xr_ref++ == 0)
559 cmd_list_append(&cmd.cmd_xxcu_redelivs, xr);
561 cmd_xr_write(hdl, xr);
566 cmd_xr_destroy(fmd_hdl_t *hdl, cmd_xr_t *xr)
568 fmd_hdl_debug(hdl, "destroying xr (clcode %llx) at %p\n",
569 xr->xr_clcode, xr);
571 fmd_case_reset(hdl, xr->xr_case);
572 cmd_case_fini(hdl, xr->xr_case, FMD_B_TRUE);
574 if (xr->xr_rsrc_nvl != NULL)
575 cmd_fmri_fini(hdl, &xr->xr_rsrc, FMD_B_TRUE);
577 fmd_buf_destroy(hdl, xr->xr_case, "redelivery");
578 fmd_hdl_free(hdl, xr, sizeof (cmd_xr_t));
582 cmd_xr_deref(fmd_hdl_t *hdl, cmd_xr_t *xr)
584 if (xr->xr_ref == 0)
585 fmd_hdl_abort(hdl, "attempt to deref xr with zero ref\n");
587 fmd_hdl_debug(hdl, "deref xr %p [%d]\n", xr, xr->xr_ref);
589 if (--xr->xr_ref == 0) {
590 cmd_list_delete(&cmd.cmd_xxcu_redelivs, xr);
591 cmd_xr_destroy(hdl, xr);
598 cmd_xr_t *xr;
600 if ((xr = cmd_buf_read(hdl, cp, "redelivery", sizeof (cmd_xr_t))) ==
606 xr->xr_case = cp;
607 xr->xr_hdlr = cmd_xr_id2hdlr(hdl, xr->xr_hdlrid);
608 if (xr->xr_rsrc_nvl != NULL)
609 cmd_fmri_restore(hdl, &xr->xr_rsrc);
610 xr->xr_cpu = cpu;
625 xr->xr_id = fmd_timer_install(hdl, (void *)CMD_TIMERTYPE_CPU_XR_WAITER,
628 cmd_list_append(&cmd.cmd_xxcu_redelivs, xr);
630 fmd_hdl_debug(hdl, "revived xr for class %llx\n", xr->xr_clcode);
2198 cmd_xr_t *xr, *xrn;
2207 for (xr = cmd_list_next(&cmd.cmd_xxcu_redelivs); xr != NULL; xr = xrn) {
2208 xrn = cmd_list_next(xr);
2210 if (xr->xr_cpu->cpu_flags & CMD_CPU_F_DELETING)
2211 cmd_xr_destroy(hdl, xr);
2225 cmd_xr_t *xr;
2227 for (xr = cmd_list_next(&cmd.cmd_xxcu_redelivs); xr != NULL;
2228 xr = cmd_list_next(xr)) {
2229 if (xr->xr_id == id) {
2231 xr->xr_case);
2232 xr->xr_hdlr(hdl, xr, ep);
2233 cmd_xr_deref(hdl, xr);