Lines Matching refs:mp

92 fmd_api_vxerror(fmd_module_t *mp, int err, const char *format, va_list ap)  in fmd_api_vxerror()  argument
135 if (mp != fmd.d_self && (raw_err != EFMD_HDL_ABORT || fmd.d_running)) { in fmd_api_vxerror()
139 nvl = fmd_protocol_moderror(mp, err, msg); in fmd_api_vxerror()
168 fmd.d_pname, mp->mod_name, msg); in fmd_api_vxerror()
174 fmd.d_pname, mp->mod_name, msg); in fmd_api_vxerror()
182 fmd_api_xerror(fmd_module_t *mp, int err, const char *format, ...) in fmd_api_xerror() argument
187 fmd_api_vxerror(mp, err, format, ap); in fmd_api_xerror()
198 fmd_api_verror(fmd_module_t *mp, int err, const char *format, va_list ap) in fmd_api_verror() argument
200 if (fmd_module_locked(mp)) in fmd_api_verror()
201 fmd_module_unlock(mp); in fmd_api_verror()
203 fmd_api_vxerror(mp, err, format, ap); in fmd_api_verror()
204 fmd_module_abort(mp, err); in fmd_api_verror()
209 fmd_api_error(fmd_module_t *mp, int err, const char *format, ...) in fmd_api_error() argument
214 fmd_api_verror(mp, err, format, ap); in fmd_api_error()
226 fmd_module_t *mp; in fmd_api_module() local
256 if ((mp = tp->thr_mod) != (fmd_module_t *)hdl) { in fmd_api_module()
257 fmd_api_error(mp, EFMD_HDL_INVAL, in fmd_api_module()
261 if (mp->mod_flags & FMD_MOD_FAIL) { in fmd_api_module()
262 fmd_api_error(mp, EFMD_MOD_FAIL, in fmd_api_module()
266 return (mp); in fmd_api_module()
279 fmd_module_t *mp = fmd_api_module(hdl); in fmd_api_module_lock() local
281 fmd_module_lock(mp); in fmd_api_module_lock()
283 if (mp->mod_info == NULL) { in fmd_api_module_lock()
284 fmd_api_error(mp, EFMD_HDL_NOTREG, in fmd_api_module_lock()
288 return (mp); in fmd_api_module_lock()
296 fmd_api_case_impl(fmd_module_t *mp, fmd_case_t *cp) in fmd_api_case_impl() argument
300 if (cip == NULL || cip->ci_mod != mp) { in fmd_api_case_impl()
301 fmd_api_error(mp, EFMD_CASE_OWNER, in fmd_api_case_impl()
319 fmd_module_t *mp = fmd_api_module(hdl); in fmd_api_transport_impl() local
322 if (xip == NULL || xip->xi_queue->eq_mod != mp) { in fmd_api_transport_impl()
323 fmd_api_error(mp, EFMD_XPRT_OWNER, in fmd_api_transport_impl()
338 fmd_hdl_register_error(fmd_module_t *mp, int err) in fmd_hdl_register_error() argument
340 if (fmd_module_locked(mp)) in fmd_hdl_register_error()
341 fmd_module_unlock(mp); in fmd_hdl_register_error()
343 fmd_api_xerror(mp, err, "failed to register"); in fmd_hdl_register_error()
357 fmd_module_t *mp = tp->thr_mod; in fmd_hdl_register() local
368 if (mp != (fmd_module_t *)hdl) in fmd_hdl_register()
369 return (fmd_hdl_register_error(mp, EFMD_HDL_INVAL)); in fmd_hdl_register()
371 fmd_module_lock(mp); in fmd_hdl_register()
380 return (fmd_hdl_register_error(mp, EFMD_VER_NEW)); in fmd_hdl_register()
383 return (fmd_hdl_register_error(mp, EFMD_VER_OLD)); in fmd_hdl_register()
385 if (mp->mod_conf != NULL) in fmd_hdl_register()
386 return (fmd_hdl_register_error(mp, EFMD_HDL_REG)); in fmd_hdl_register()
388 if (pthread_self() != mp->mod_thread->thr_tid) in fmd_hdl_register()
389 return (fmd_hdl_register_error(mp, EFMD_HDL_TID)); in fmd_hdl_register()
393 return (fmd_hdl_register_error(mp, EFMD_HDL_INFO)); in fmd_hdl_register()
435 fmd_api_xerror(mp, EFMD_HDL_PROP, in fmd_hdl_register()
438 return (fmd_hdl_register_error(mp, EFMD_HDL_PROP)); in fmd_hdl_register()
442 mp->mod_argc = i; in fmd_hdl_register()
443 mp->mod_argv = fmd_zalloc(sizeof (fmd_conf_formal_t) * i, FMD_SLEEP); in fmd_hdl_register()
446 cfp = mp->mod_argv; in fmd_hdl_register()
448 for (i = 0; i < mp->mod_argc; i++, prop++, cfp++) { in fmd_hdl_register()
458 if (mp->mod_path != NULL) { in fmd_hdl_register()
459 (void) strlcpy(buf, mp->mod_path, sizeof (buf)); in fmd_hdl_register()
463 (void) strlcat(buf, mp->mod_name, sizeof (buf)); in fmd_hdl_register()
470 if ((mp->mod_conf = fmd_conf_open(conf, in fmd_hdl_register()
471 mp->mod_argc, mp->mod_argv, 0)) == NULL) in fmd_hdl_register()
472 return (fmd_hdl_register_error(mp, EFMD_MOD_CONF)); in fmd_hdl_register()
474 fmd_conf_propagate(fmd.d_conf, mp->mod_conf, mp->mod_name); in fmd_hdl_register()
481 (void) fmd_conf_getprop(mp->mod_conf, FMD_PROP_DICTIONARIES, &pap); in fmd_hdl_register()
482 if (pap->cpa_argc == 0 && mp->mod_ops == &fmd_bltin_ops) in fmd_hdl_register()
486 if (fmd_module_dc_opendict(mp, pap->cpa_argv[i]) != 0) { in fmd_hdl_register()
487 fmd_api_xerror(mp, errno, in fmd_hdl_register()
489 return (fmd_hdl_register_error(mp, EFMD_MOD_CONF)); in fmd_hdl_register()
497 mp->mod_info = fmd_alloc(sizeof (fmd_hdl_info_t), FMD_SLEEP); in fmd_hdl_register()
498 mp->mod_info->fmdi_desc = fmd_strdup(mip->fmdi_desc, FMD_SLEEP); in fmd_hdl_register()
499 mp->mod_info->fmdi_vers = fmd_strdup(mip->fmdi_vers, FMD_SLEEP); in fmd_hdl_register()
500 mp->mod_info->fmdi_ops = fmd_alloc(sizeof (fmd_hdl_ops_t), FMD_SLEEP); in fmd_hdl_register()
501 bcopy(&ops, (void *)mp->mod_info->fmdi_ops, sizeof (fmd_hdl_ops_t)); in fmd_hdl_register()
502 mp->mod_info->fmdi_props = NULL; in fmd_hdl_register()
507 if (mp->mod_vers == NULL) in fmd_hdl_register()
508 mp->mod_vers = fmd_strdup(mip->fmdi_vers, FMD_SLEEP); in fmd_hdl_register()
514 mp->mod_fmri = fmd_protocol_fmri_module(mp); in fmd_hdl_register()
520 (void) fmd_conf_getprop(mp->mod_conf, FMD_PROP_SUBSCRIPTIONS, &pap); in fmd_hdl_register()
523 fmd_dispq_insert(fmd.d_disp, mp->mod_queue, pap->cpa_argv[i]); in fmd_hdl_register()
531 fmd_module_unlock(mp); in fmd_hdl_register()
532 fmd_ckpt_restore(mp); in fmd_hdl_register()
543 fmd_module_thrcancel(fmd_idspace_t *ids, id_t id, fmd_module_t *mp) in fmd_module_thrcancel() argument
561 "thread %u\n", mp->mod_name, tp->thr_tid); in fmd_module_thrcancel()
567 mp->mod_name, tp->thr_tid); in fmd_module_thrcancel()
577 fmd_module_unregister(fmd_module_t *mp) in fmd_module_unregister() argument
579 fmd_conf_formal_t *cfp = mp->mod_argv; in fmd_module_unregister()
585 TRACE((FMD_DBG_MOD, "unregister %p (%s)", (void *)mp, mp->mod_name)); in fmd_module_unregister()
586 ASSERT(fmd_module_locked(mp)); in fmd_module_unregister()
592 while ((xp = fmd_list_next(&mp->mod_transports)) != NULL) in fmd_module_unregister()
601 fmd_idspace_apply(mp->mod_threads, in fmd_module_unregister()
602 (void (*)())fmd_module_thrcancel, mp); in fmd_module_unregister()
604 if (mp->mod_error == 0) in fmd_module_unregister()
605 fmd_ckpt_save(mp); /* take one more checkpoint if needed */ in fmd_module_unregister()
611 while ((cp = fmd_list_next(&mp->mod_cases)) != NULL) in fmd_module_unregister()
614 fmd_ustat_delete_references(mp->mod_ustat); in fmd_module_unregister()
615 (void) fmd_conf_getprop(mp->mod_conf, FMD_PROP_SUBSCRIPTIONS, &pap); in fmd_module_unregister()
619 fmd_dispq_delete(fmd.d_disp, mp->mod_queue, pap->cpa_argv[i]); in fmd_module_unregister()
622 fmd_conf_close(mp->mod_conf); in fmd_module_unregister()
623 mp->mod_conf = NULL; in fmd_module_unregister()
625 for (i = 0; i < mp->mod_argc; i++, cfp++) { in fmd_module_unregister()
630 fmd_free(mp->mod_argv, sizeof (fmd_conf_formal_t) * mp->mod_argc); in fmd_module_unregister()
631 mp->mod_argv = NULL; in fmd_module_unregister()
632 mp->mod_argc = 0; in fmd_module_unregister()
634 nvlist_free(mp->mod_fmri); in fmd_module_unregister()
635 mp->mod_fmri = NULL; in fmd_module_unregister()
637 fmd_strfree((char *)mp->mod_info->fmdi_desc); in fmd_module_unregister()
638 fmd_strfree((char *)mp->mod_info->fmdi_vers); in fmd_module_unregister()
639 fmd_free((void *)mp->mod_info->fmdi_ops, sizeof (fmd_hdl_ops_t)); in fmd_module_unregister()
640 fmd_free(mp->mod_info, sizeof (fmd_hdl_info_t)); in fmd_module_unregister()
641 mp->mod_info = NULL; in fmd_module_unregister()
643 fmd_eventq_abort(mp->mod_queue); in fmd_module_unregister()
649 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_unregister() local
650 fmd_module_unregister(mp); in fmd_hdl_unregister()
651 fmd_module_unlock(mp); in fmd_hdl_unregister()
657 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_subscribe() local
659 if (fmd_conf_setprop(mp->mod_conf, in fmd_hdl_subscribe()
661 fmd_dispq_insert(fmd.d_disp, mp->mod_queue, class); in fmd_hdl_subscribe()
665 fmd_module_unlock(mp); in fmd_hdl_subscribe()
672 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_unsubscribe() local
674 if (fmd_conf_delprop(mp->mod_conf, in fmd_hdl_unsubscribe()
677 fmd_dispq_delete(fmd.d_disp, mp->mod_queue, class); in fmd_hdl_unsubscribe()
680 fmd_module_unlock(mp); in fmd_hdl_unsubscribe()
681 fmd_eventq_cancel(mp->mod_queue, FMD_EVT_PROTOCOL, (void *)class); in fmd_hdl_unsubscribe()
687 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_setspecific() local
689 mp->mod_spec = spec; in fmd_hdl_setspecific()
690 fmd_module_unlock(mp); in fmd_hdl_setspecific()
696 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_getspecific() local
697 void *spec = mp->mod_spec; in fmd_hdl_getspecific()
699 fmd_module_unlock(mp); in fmd_hdl_getspecific()
706 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_opendict() local
715 (void) fmd_conf_setprop(mp->mod_conf, FMD_PROP_DICTIONARIES, dict); in fmd_hdl_opendict()
716 (void) fmd_conf_getprop(mp->mod_conf, FMD_PROP_DICTIONARIES, &pap); in fmd_hdl_opendict()
718 ASSERT(pap->cpa_argc > mp->mod_dictc); in fmd_hdl_opendict()
720 for (i = mp->mod_dictc; i < pap->cpa_argc; i++) { in fmd_hdl_opendict()
721 if (fmd_module_dc_opendict(mp, pap->cpa_argv[i]) != 0) { in fmd_hdl_opendict()
722 fmd_api_error(mp, EFMD_MOD_DICT, in fmd_hdl_opendict()
724 pap->cpa_argv[i], mp->mod_name); in fmd_hdl_opendict()
728 fmd_module_unlock(mp); in fmd_hdl_opendict()
734 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_topo_hold() local
738 fmd_api_error(mp, EFMD_MOD_TOPO, "libtopo version mismatch: " in fmd_hdl_topo_hold()
742 thp = fmd_module_topo_hold(mp); in fmd_hdl_topo_hold()
745 fmd_module_unlock(mp); in fmd_hdl_topo_hold()
752 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_topo_rele() local
754 if (fmd_module_topo_rele(mp, thp) != 0) in fmd_hdl_topo_rele()
755 fmd_api_error(mp, EFMD_MOD_TOPO, "failed to release invalid " in fmd_hdl_topo_rele()
758 fmd_module_unlock(mp); in fmd_hdl_topo_rele()
762 fmd_hdl_alloc_locked(fmd_module_t *mp, size_t size, int flags) in fmd_hdl_alloc_locked() argument
766 if (mp->mod_stats->ms_memlimit.fmds_value.ui64 - in fmd_hdl_alloc_locked()
767 mp->mod_stats->ms_memtotal.fmds_value.ui64 < size) { in fmd_hdl_alloc_locked()
768 fmd_api_error(mp, EFMD_HDL_NOMEM, "%s's allocation of %lu " in fmd_hdl_alloc_locked()
770 mp->mod_name, (ulong_t)size, (u_longlong_t) in fmd_hdl_alloc_locked()
771 mp->mod_stats->ms_memtotal.fmds_value.ui64); in fmd_hdl_alloc_locked()
775 mp->mod_stats->ms_memtotal.fmds_value.ui64 += size; in fmd_hdl_alloc_locked()
783 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_alloc() local
786 data = fmd_hdl_alloc_locked(mp, size, flags); in fmd_hdl_alloc()
788 fmd_module_unlock(mp); in fmd_hdl_alloc()
804 fmd_hdl_free_locked(fmd_module_t *mp, void *data, size_t size) in fmd_hdl_free_locked() argument
807 mp->mod_stats->ms_memtotal.fmds_value.ui64 -= size; in fmd_hdl_free_locked()
813 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_free() local
815 fmd_hdl_free_locked(mp, data, size); in fmd_hdl_free()
817 fmd_module_unlock(mp); in fmd_hdl_free()
853 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_abort() local
857 fmd_api_verror(mp, EFMD_HDL_ABORT, format, ap); in fmd_hdl_abort()
864 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_verror() local
865 fmd_api_vxerror(mp, errno, format, ap); in fmd_hdl_verror()
866 fmd_module_unlock(mp); in fmd_hdl_verror()
883 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_vdebug() local
890 mp->mod_stats->ms_debugdrop.fmds_value.ui64++; in fmd_hdl_vdebug()
891 fmd_module_unlock(mp); in fmd_hdl_vdebug()
898 mp->mod_stats->ms_debugdrop.fmds_value.ui64++; in fmd_hdl_vdebug()
899 fmd_module_unlock(mp); in fmd_hdl_vdebug()
911 fmd.d_pname, mp->mod_name, msg); in fmd_hdl_vdebug()
917 fmd.d_pname, mp->mod_name, msg); in fmd_hdl_vdebug()
921 fmd_module_unlock(mp); in fmd_hdl_vdebug()
938 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_prop_get_int32() local
939 const fmd_conf_ops_t *ops = fmd_conf_gettype(mp->mod_conf, name); in fmd_prop_get_int32()
944 (void) fmd_conf_getprop(mp->mod_conf, name, &value); in fmd_prop_get_int32()
946 fmd_api_error(mp, EFMD_PROP_TYPE, in fmd_prop_get_int32()
949 fmd_api_error(mp, EFMD_PROP_DEFN, in fmd_prop_get_int32()
953 fmd_module_unlock(mp); in fmd_prop_get_int32()
960 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_prop_get_int64() local
961 const fmd_conf_ops_t *ops = fmd_conf_gettype(mp->mod_conf, name); in fmd_prop_get_int64()
966 (void) fmd_conf_getprop(mp->mod_conf, name, &value); in fmd_prop_get_int64()
968 fmd_api_error(mp, EFMD_PROP_TYPE, in fmd_prop_get_int64()
971 fmd_api_error(mp, EFMD_PROP_DEFN, in fmd_prop_get_int64()
975 fmd_module_unlock(mp); in fmd_prop_get_int64()
982 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_prop_get_string() local
983 const fmd_conf_ops_t *ops = fmd_conf_gettype(mp->mod_conf, name); in fmd_prop_get_string()
988 (void) fmd_conf_getprop(mp->mod_conf, name, &s); in fmd_prop_get_string()
991 fmd_api_error(mp, EFMD_PROP_TYPE, in fmd_prop_get_string()
994 fmd_api_error(mp, EFMD_PROP_DEFN, in fmd_prop_get_string()
998 fmd_module_unlock(mp); in fmd_prop_get_string()
1005 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_prop_free_string() local
1007 fmd_module_unlock(mp); in fmd_prop_free_string()
1013 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_stat_create() local
1017 fmd_api_error(mp, EFMD_STAT_FLAGS, in fmd_stat_create()
1021 if ((sp = fmd_ustat_insert(mp->mod_ustat, in fmd_stat_create()
1023 fmd_api_error(mp, errno, in fmd_stat_create()
1027 fmd_module_unlock(mp); in fmd_stat_create()
1034 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_stat_destroy() local
1035 fmd_ustat_delete(mp->mod_ustat, argc, argv); in fmd_stat_destroy()
1036 fmd_module_unlock(mp); in fmd_stat_destroy()
1043 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_stat_setstr() local
1047 fmd_api_error(mp, EFMD_STAT_TYPE, in fmd_stat_setstr()
1054 fmd_module_unlock(mp); in fmd_stat_setstr()
1060 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_open() local
1061 fmd_case_t *cp = fmd_case_create(mp, NULL, data); in fmd_case_open()
1062 fmd_module_unlock(mp); in fmd_case_open()
1069 fmd_module_t *mp; in fmd_case_open_uuid() local
1074 mp = fmd_api_module_lock(hdl); in fmd_case_open_uuid()
1079 fmd_api_error(mp, EFMD_CASE_INVAL, "NULL uuid string\n"); in fmd_case_open_uuid()
1081 fmd_api_error(mp, EFMD_CASE_INVAL, "invalid uuid string: '%s' " in fmd_case_open_uuid()
1084 fmd_api_error(mp, EFMD_CASE_INVAL, "cannot parse uuid string: " in fmd_case_open_uuid()
1089 cp = fmd_case_create(mp, uuidstr, data); in fmd_case_open_uuid()
1095 fmd_module_unlock(mp); in fmd_case_open_uuid()
1102 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_reset() local
1103 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_reset()
1106 fmd_api_error(mp, EFMD_CASE_STATE, "cannot solve %s: " in fmd_case_reset()
1111 fmd_module_unlock(mp); in fmd_case_reset()
1117 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_solve() local
1118 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_solve()
1121 fmd_api_error(mp, EFMD_CASE_STATE, "cannot solve %s: " in fmd_case_solve()
1126 fmd_module_unlock(mp); in fmd_case_solve()
1132 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_close() local
1134 (void) fmd_api_case_impl(mp, cp); /* validate 'cp' */ in fmd_case_close()
1137 fmd_module_unlock(mp); in fmd_case_close()
1143 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_uuid() local
1144 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_uuid()
1147 fmd_module_unlock(mp); in fmd_case_uuid()
1154 fmd_module_t *cmp, *mp = fmd_api_module_lock(hdl); in fmd_case_uulookup() local
1163 fmd_module_unlock(mp); in fmd_case_uulookup()
1164 return (cmp == mp ? cp : NULL); in fmd_case_uulookup()
1170 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_uuclose() local
1178 fmd_module_unlock(mp); in fmd_case_uuclose()
1184 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_uuclosed() local
1194 fmd_module_unlock(mp); in fmd_case_uuclosed()
1201 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_uuresolved() local
1217 fmd_module_unlock(mp); in fmd_case_uuresolved()
1223 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_uuisresolved() local
1233 fmd_module_unlock(mp); in fmd_case_uuisresolved()
1240 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_instate() local
1241 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_instate()
1244 fmd_module_unlock(mp); in fmd_case_instate()
1263 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_add_ereport() local
1265 (void) fmd_api_case_impl(mp, cp); /* validate 'cp' */ in fmd_case_add_ereport()
1268 mp->mod_stats->ms_accepted.fmds_value.ui64++; in fmd_case_add_ereport()
1270 fmd_module_unlock(mp); in fmd_case_add_ereport()
1276 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_add_serd() local
1280 if ((sgp = fmd_serd_eng_lookup(&mp->mod_serds, name)) == NULL) { in fmd_case_add_serd()
1281 fmd_api_error(mp, EFMD_SERD_NAME, in fmd_case_add_serd()
1285 (void) fmd_api_case_impl(mp, cp); /* validate 'cp' */ in fmd_case_add_serd()
1290 mp->mod_stats->ms_accepted.fmds_value.ui64++; in fmd_case_add_serd()
1293 fmd_module_unlock(mp); in fmd_case_add_serd()
1299 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_add_suspect() local
1300 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_add_suspect()
1308 fmd_api_error(mp, EFMD_CASE_STATE, "cannot add suspect to " in fmd_case_add_suspect()
1314 fmd_api_error(mp, EFMD_CASE_EVENT, "cannot add suspect to " in fmd_case_add_suspect()
1318 thp = fmd_module_topo_hold(mp); in fmd_case_add_suspect()
1390 err = fmd_module_topo_rele(mp, thp); in fmd_case_add_suspect()
1394 fmd_module_unlock(mp); in fmd_case_add_suspect()
1400 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_setspecific() local
1401 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_setspecific()
1407 fmd_module_unlock(mp); in fmd_case_setspecific()
1413 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_getspecific() local
1414 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_getspecific()
1421 fmd_module_unlock(mp); in fmd_case_getspecific()
1428 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_setprincipal() local
1430 (void) fmd_api_case_impl(mp, cp); /* validate 'cp' */ in fmd_case_setprincipal()
1433 mp->mod_stats->ms_accepted.fmds_value.ui64++; in fmd_case_setprincipal()
1435 fmd_module_unlock(mp); in fmd_case_setprincipal()
1441 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_getprincipal() local
1442 fmd_case_impl_t *cip = fmd_api_case_impl(mp, cp); in fmd_case_getprincipal()
1449 fmd_module_unlock(mp); in fmd_case_getprincipal()
1456 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_next() local
1459 cp = fmd_list_next(fmd_api_case_impl(mp, cp)); in fmd_case_next()
1461 cp = fmd_list_next(&mp->mod_cases); in fmd_case_next()
1463 fmd_module_unlock(mp); in fmd_case_next()
1470 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_case_prev() local
1473 cp = fmd_list_prev(fmd_api_case_impl(mp, cp)); in fmd_case_prev()
1475 cp = fmd_list_prev(&mp->mod_cases); in fmd_case_prev()
1477 fmd_module_unlock(mp); in fmd_case_prev()
1486 fmd_buf_gethash(fmd_module_t *mp, fmd_case_t *cp) in fmd_buf_gethash() argument
1488 return (cp ? &fmd_api_case_impl(mp, cp)->ci_bufs : &mp->mod_bufs); in fmd_buf_gethash()
1494 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_buf_create() local
1495 fmd_buf_hash_t *bhp = fmd_buf_gethash(mp, cp); in fmd_buf_create()
1500 fmd_api_error(mp, EFMD_BUF_INVAL, "cannot create '%s' " in fmd_buf_create()
1505 if (mp->mod_stats->ms_buflimit.fmds_value.ui64 - in fmd_buf_create()
1506 mp->mod_stats->ms_buftotal.fmds_value.ui64 < size) { in fmd_buf_create()
1507 fmd_api_error(mp, EFMD_BUF_LIMIT, "cannot create '%s': " in fmd_buf_create()
1509 mp->mod_stats->ms_buflimit.fmds_value.ui64); in fmd_buf_create()
1512 mp->mod_stats->ms_buftotal.fmds_value.ui64 += size; in fmd_buf_create()
1516 fmd_api_error(mp, EFMD_BUF_EXISTS, in fmd_buf_create()
1523 fmd_module_setdirty(mp); in fmd_buf_create()
1525 fmd_module_unlock(mp); in fmd_buf_create()
1531 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_buf_destroy() local
1532 fmd_buf_hash_t *bhp = fmd_buf_gethash(mp, cp); in fmd_buf_destroy()
1536 mp->mod_stats->ms_buftotal.fmds_value.ui64 -= bp->buf_size; in fmd_buf_destroy()
1542 fmd_module_setdirty(mp); in fmd_buf_destroy()
1545 fmd_module_unlock(mp); in fmd_buf_destroy()
1552 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_buf_read() local
1553 fmd_buf_t *bp = fmd_buf_lookup(fmd_buf_gethash(mp, cp), name); in fmd_buf_read()
1556 fmd_api_error(mp, EFMD_BUF_NOENT, "no buf named '%s' is " in fmd_buf_read()
1564 fmd_module_unlock(mp); in fmd_buf_read()
1571 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_buf_write() local
1572 fmd_buf_hash_t *bhp = fmd_buf_gethash(mp, cp); in fmd_buf_write()
1577 fmd_api_error(mp, EFMD_BUF_INVAL, "cannot write '%s' " in fmd_buf_write()
1582 if (mp->mod_stats->ms_buflimit.fmds_value.ui64 - in fmd_buf_write()
1583 mp->mod_stats->ms_buftotal.fmds_value.ui64 < size) { in fmd_buf_write()
1584 fmd_api_error(mp, EFMD_BUF_LIMIT, "cannot write '%s': " in fmd_buf_write()
1586 mp->mod_stats->ms_buflimit.fmds_value.ui64); in fmd_buf_write()
1589 mp->mod_stats->ms_buftotal.fmds_value.ui64 += size; in fmd_buf_write()
1593 fmd_api_error(mp, EFMD_BUF_OFLOW, in fmd_buf_write()
1604 fmd_module_setdirty(mp); in fmd_buf_write()
1606 fmd_module_unlock(mp); in fmd_buf_write()
1612 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_buf_size() local
1613 fmd_buf_hash_t *bhp = fmd_buf_gethash(mp, cp); in fmd_buf_size()
1623 fmd_module_unlock(mp); in fmd_buf_size()
1630 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_create() local
1632 if (fmd_serd_eng_lookup(&mp->mod_serds, name) != NULL) { in fmd_serd_create()
1633 fmd_api_error(mp, EFMD_SERD_EXISTS, in fmd_serd_create()
1638 (void) fmd_serd_eng_insert(&mp->mod_serds, name, n, t); in fmd_serd_create()
1639 fmd_module_setdirty(mp); in fmd_serd_create()
1640 fmd_module_unlock(mp); in fmd_serd_create()
1646 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_destroy() local
1648 fmd_serd_eng_delete(&mp->mod_serds, name); in fmd_serd_destroy()
1649 fmd_module_setdirty(mp); in fmd_serd_destroy()
1650 fmd_module_unlock(mp); in fmd_serd_destroy()
1656 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_exists() local
1657 int rv = (fmd_serd_eng_lookup(&mp->mod_serds, name) != NULL); in fmd_serd_exists()
1658 fmd_module_unlock(mp); in fmd_serd_exists()
1666 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_reset() local
1669 if ((sgp = fmd_serd_eng_lookup(&mp->mod_serds, name)) == NULL) { in fmd_serd_reset()
1670 fmd_api_error(mp, EFMD_SERD_NAME, in fmd_serd_reset()
1675 fmd_module_setdirty(mp); in fmd_serd_reset()
1676 fmd_module_unlock(mp); in fmd_serd_reset()
1682 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_record() local
1686 if ((sgp = fmd_serd_eng_lookup(&mp->mod_serds, name)) == NULL) { in fmd_serd_record()
1687 fmd_api_error(mp, EFMD_SERD_NAME, in fmd_serd_record()
1694 fmd_module_setdirty(mp); in fmd_serd_record()
1696 fmd_module_unlock(mp); in fmd_serd_record()
1703 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_fired() local
1707 if ((sgp = fmd_serd_eng_lookup(&mp->mod_serds, name)) == NULL) { in fmd_serd_fired()
1708 fmd_api_error(mp, EFMD_SERD_NAME, in fmd_serd_fired()
1713 fmd_module_unlock(mp); in fmd_serd_fired()
1720 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_serd_empty() local
1724 if ((sgp = fmd_serd_eng_lookup(&mp->mod_serds, name)) == NULL) { in fmd_serd_empty()
1725 fmd_api_error(mp, EFMD_SERD_NAME, in fmd_serd_empty()
1730 fmd_module_unlock(mp); in fmd_serd_empty()
1737 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_thr_create() local
1741 if (mp->mod_stats->ms_thrtotal.fmds_value.ui32 >= in fmd_thr_create()
1742 mp->mod_stats->ms_thrlimit.fmds_value.ui32) { in fmd_thr_create()
1743 fmd_api_error(mp, EFMD_THR_LIMIT, "%s request to create an " in fmd_thr_create()
1745 mp->mod_name, mp->mod_stats->ms_thrlimit.fmds_value.ui32); in fmd_thr_create()
1748 if ((tp = fmd_thread_create(mp, func, arg)) == NULL) { in fmd_thr_create()
1749 fmd_api_error(mp, EFMD_THR_CREATE, in fmd_thr_create()
1754 mp->mod_stats->ms_thrtotal.fmds_value.ui32++; in fmd_thr_create()
1755 (void) fmd_idspace_xalloc(mp->mod_threads, tid, tp); in fmd_thr_create()
1757 fmd_module_unlock(mp); in fmd_thr_create()
1764 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_thr_destroy() local
1769 fmd_api_error(mp, EFMD_THR_INVAL, "auxiliary thread tried to " in fmd_thr_destroy()
1773 if ((tp = fmd_idspace_getspecific(mp->mod_threads, tid)) == NULL) { in fmd_thr_destroy()
1774 fmd_api_error(mp, EFMD_THR_INVAL, "auxiliary thread tried to " in fmd_thr_destroy()
1783 fmd_module_unlock(mp); in fmd_thr_destroy()
1785 mp = fmd_api_module_lock(hdl); in fmd_thr_destroy()
1795 fmd_api_error(mp, EFMD_THR_JOIN, in fmd_thr_destroy()
1801 mp->mod_stats->ms_thrtotal.fmds_value.ui32--; in fmd_thr_destroy()
1802 (void) fmd_idspace_free(mp->mod_threads, tid); in fmd_thr_destroy()
1805 fmd_module_unlock(mp); in fmd_thr_destroy()
1811 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_thr_signal() local
1813 if (tid != mp->mod_thread->thr_tid && in fmd_thr_signal()
1814 fmd_idspace_getspecific(mp->mod_threads, tid) == NULL) { in fmd_thr_signal()
1815 fmd_api_error(mp, EFMD_THR_INVAL, "tid %u is not a valid " in fmd_thr_signal()
1816 "thread id for module %s\n", tid, mp->mod_name); in fmd_thr_signal()
1820 fmd_module_unlock(mp); in fmd_thr_signal()
1826 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_thr_checkpoint() local
1829 if (tid == mp->mod_thread->thr_tid || in fmd_thr_checkpoint()
1830 fmd_idspace_getspecific(mp->mod_threads, tid) == NULL) { in fmd_thr_checkpoint()
1831 fmd_api_error(mp, EFMD_THR_INVAL, "tid %u is not a valid " in fmd_thr_checkpoint()
1832 "auxiliary thread id for module %s\n", tid, mp->mod_name); in fmd_thr_checkpoint()
1835 fmd_ckpt_save(mp); in fmd_thr_checkpoint()
1837 fmd_module_unlock(mp); in fmd_thr_checkpoint()
1846 fmd_module_t *mp; in fmd_doorthr_create() local
1862 mp = old_tp->thr_mod; in fmd_doorthr_create()
1863 (void) fmd_api_module_lock((fmd_hdl_t *)mp); in fmd_doorthr_create()
1865 if (dip && mp->mod_stats->ms_doorthrtotal.fmds_value.ui32 >= in fmd_doorthr_create()
1866 mp->mod_stats->ms_doorthrlimit.fmds_value.ui32) { in fmd_doorthr_create()
1867 fmd_module_unlock(mp); in fmd_doorthr_create()
1875 if ((new_tp = fmd_doorthread_create(mp, (fmd_thread_f *)(uintptr_t)crf, in fmd_doorthr_create()
1878 mp->mod_stats->ms_doorthrtotal.fmds_value.ui32++; in fmd_doorthr_create()
1879 (void) fmd_idspace_xalloc(mp->mod_threads, tid, new_tp); in fmd_doorthr_create()
1882 fmd_module_unlock(mp); in fmd_doorthr_create()
1902 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_timer_install() local
1907 fmd_api_error(mp, EFMD_TIMER_INVAL, in fmd_timer_install()
1912 t->mt_mod = mp; in fmd_timer_install()
1916 if ((id = fmd_timerq_install(fmd.d_timers, mp->mod_timerids, in fmd_timer_install()
1919 fmd_api_error(mp, EFMD_TIMER_LIMIT, in fmd_timer_install()
1923 fmd_module_unlock(mp); in fmd_timer_install()
1930 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_timer_remove() local
1933 if (!fmd_idspace_valid(mp->mod_timerids, id)) { in fmd_timer_remove()
1934 fmd_api_error(mp, EFMD_TIMER_INVAL, in fmd_timer_remove()
1948 if ((t = fmd_timerq_remove(fmd.d_timers, mp->mod_timerids, id)) != NULL) in fmd_timer_remove()
1950 fmd_module_unlock(mp); in fmd_timer_remove()
1952 fmd_eventq_cancel(mp->mod_queue, FMD_EVT_TIMEOUT, (void *)id); in fmd_timer_remove()
1960 fmd_module_t *mp; in fmd_nvl_create_suspect() local
1963 mp = fmd_api_module_lock(hdl); in fmd_nvl_create_suspect()
1966 fmd_api_error(mp, EFMD_NVL_INVAL, "invalid %s class: '%s'\n", in fmd_nvl_create_suspect()
1971 fmd_module_unlock(mp); in fmd_nvl_create_suspect()
2003 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_fmauth() local
2008 fmd_module_unlock(mp); in fmd_hdl_fmauth()
2016 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_hdl_modauth() local
2019 auth = (const nvlist_t *)mp->mod_fmri; in fmd_hdl_modauth()
2021 fmd_module_unlock(mp); in fmd_hdl_modauth()
2030 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_class_match() local
2037 fmd_module_unlock(mp); in fmd_nvl_class_match()
2044 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_expand() local
2048 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_expand()
2053 fmd_module_unlock(mp); in fmd_nvl_fmri_expand()
2060 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_present() local
2064 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_present()
2069 fmd_module_unlock(mp); in fmd_nvl_fmri_present()
2072 fmd_api_error(mp, EFMD_FMRI_OP, "invalid fmri for " in fmd_nvl_fmri_present()
2082 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_replaced() local
2086 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_replaced()
2091 fmd_module_unlock(mp); in fmd_nvl_fmri_replaced()
2099 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_unusable() local
2103 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_unusable()
2108 fmd_module_unlock(mp); in fmd_nvl_fmri_unusable()
2111 fmd_api_error(mp, EFMD_FMRI_OP, "invalid fmri for " in fmd_nvl_fmri_unusable()
2121 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_retire() local
2125 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_retire()
2130 fmd_module_unlock(mp); in fmd_nvl_fmri_retire()
2138 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_unretire() local
2142 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_unretire()
2147 fmd_module_unlock(mp); in fmd_nvl_fmri_unretire()
2155 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_service_state() local
2159 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_service_state()
2167 fmd_module_unlock(mp); in fmd_nvl_fmri_service_state()
2170 fmd_api_error(mp, EFMD_FMRI_OP, "invalid fmri for " in fmd_nvl_fmri_service_state()
2202 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_has_fault() local
2210 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_has_fault()
2214 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_has_fault()
2220 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_has_fault()
2238 fmd_module_unlock(mp); in fmd_nvl_fmri_has_fault()
2245 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_contains() local
2249 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_contains()
2254 fmd_module_unlock(mp); in fmd_nvl_fmri_contains()
2257 fmd_api_error(mp, EFMD_FMRI_OP, "invalid fmri for " in fmd_nvl_fmri_contains()
2267 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_fmri_translate() local
2271 fmd_api_error(mp, EFMD_NVL_INVAL, in fmd_nvl_fmri_translate()
2276 fmd_module_unlock(mp); in fmd_nvl_fmri_translate()
2283 fmd_module_t *mp = va_arg(ap, fmd_module_t *); in fmd_nvl_op_init() local
2285 ops->nva_arg = mp; in fmd_nvl_op_init()
2293 fmd_module_t *mp = ops->nva_arg; in fmd_nvl_op_alloc_sleep() local
2295 return (fmd_hdl_alloc_locked(mp, size, FMD_SLEEP)); in fmd_nvl_op_alloc_sleep()
2301 fmd_module_t *mp = ops->nva_arg; in fmd_nvl_op_alloc_nosleep() local
2303 return (fmd_hdl_alloc_locked(mp, size, FMD_NOSLEEP)); in fmd_nvl_op_alloc_nosleep()
2309 fmd_module_t *mp = ops->nva_arg; in fmd_nvl_op_free() local
2311 fmd_hdl_free_locked(mp, data, size); in fmd_nvl_op_free()
2333 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_alloc() local
2339 nva = &mp->mod_nva_sleep; in fmd_nvl_alloc()
2341 nva = &mp->mod_nva_nosleep; in fmd_nvl_alloc()
2345 fmd_module_unlock(mp); in fmd_nvl_alloc()
2356 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_nvl_dup() local
2362 nva = &mp->mod_nva_sleep; in fmd_nvl_dup()
2364 nva = &mp->mod_nva_nosleep; in fmd_nvl_dup()
2368 fmd_module_unlock(mp); in fmd_nvl_dup()
2427 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_xprt_open() local
2431 fmd_api_error(mp, EFMD_XPRT_INVAL, in fmd_xprt_open()
2437 fmd_api_error(mp, EFMD_XPRT_INVAL, in fmd_xprt_open()
2441 if (mp->mod_stats->ms_xprtopen.fmds_value.ui32 >= in fmd_xprt_open()
2442 mp->mod_stats->ms_xprtlimit.fmds_value.ui32) { in fmd_xprt_open()
2443 fmd_api_error(mp, EFMD_XPRT_LIMIT, "%s request to create a " in fmd_xprt_open()
2445 mp->mod_name, mp->mod_stats->ms_xprtlimit.fmds_value.ui32); in fmd_xprt_open()
2448 if ((xp = fmd_xprt_create(mp, flags, auth, data)) == NULL) in fmd_xprt_open()
2449 fmd_api_error(mp, errno, "cannot create transport"); in fmd_xprt_open()
2451 fmd_module_unlock(mp); in fmd_xprt_open()
2458 fmd_module_t *mp = fmd_api_module_lock(hdl); in fmd_xprt_close() local
2469 fmd_api_error(mp, EFMD_XPRT_INVAL, in fmd_xprt_close()
2474 fmd_module_unlock(mp); in fmd_xprt_close()
2481 fmd_module_t *mp = fmd_api_module(hdl); in fmd_xprt_post() local
2491 if (nva == &mp->mod_nva_sleep || nva == &mp->mod_nva_nosleep) { in fmd_xprt_post()