Lines Matching refs:mod

117 	topo_mod_t *mod = NULL;
125 if ((mod = topo_mod_lookup(thp, name, 1)) != NULL) {
126 if (mod->tm_info->tmi_version != version) {
127 topo_mod_rele(mod);
131 return (mod);
138 (mod = topo_modhash_load(thp, name, path, &topo_rtld_ops, version))
139 == NULL) { /* returned with mod held */
148 return (mod);
152 topo_mod_unload(topo_mod_t *mod)
154 topo_mod_rele(mod);
158 set_register_error(topo_mod_t *mod, int err)
160 if (mod->tm_info != NULL)
161 topo_mod_unregister(mod);
163 topo_dprintf(mod->tm_hdl, TOPO_DBG_ERR,
165 mod->tm_name, topo_strerror(err));
167 return (topo_mod_seterrno(mod, err));
171 topo_mod_register(topo_mod_t *mod, const topo_modinfo_t *mip,
175 assert(!(mod->tm_flags & TOPO_MOD_FINI ||
176 mod->tm_flags & TOPO_MOD_REG));
179 return (set_register_error(mod, EMOD_VER_ABI));
181 if ((mod->tm_info = topo_mod_zalloc(mod, sizeof (topo_imodinfo_t)))
183 return (set_register_error(mod, EMOD_NOMEM));
184 if ((mod->tm_info->tmi_ops = topo_mod_alloc(mod,
186 return (set_register_error(mod, EMOD_NOMEM));
188 mod->tm_info->tmi_desc = topo_mod_strdup(mod, mip->tmi_desc);
189 if (mod->tm_info->tmi_desc == NULL)
190 return (set_register_error(mod, EMOD_NOMEM));
192 mod->tm_info->tmi_scheme = topo_mod_strdup(mod, mip->tmi_scheme);
193 if (mod->tm_info->tmi_scheme == NULL)
194 return (set_register_error(mod, EMOD_NOMEM));
197 mod->tm_info->tmi_version = (topo_version_t)mip->tmi_version;
198 mod->tm_info->tmi_ops->tmo_enum = mip->tmi_ops->tmo_enum;
199 mod->tm_info->tmi_ops->tmo_release = mip->tmi_ops->tmo_release;
201 mod->tm_flags |= TOPO_MOD_REG;
203 topo_dprintf(mod->tm_hdl, TOPO_DBG_MODSVC,
204 "registration succeeded for %s\n", mod->tm_name);
210 topo_mod_unregister(topo_mod_t *mod)
212 if (mod->tm_info == NULL)
215 assert(!(mod->tm_flags & TOPO_MOD_FINI));
217 mod->tm_flags &= ~TOPO_MOD_REG;
219 if (mod->tm_info == NULL)
222 if (mod->tm_info->tmi_ops != NULL)
223 topo_mod_free(mod, mod->tm_info->tmi_ops,
225 if (mod->tm_info->tmi_desc != NULL)
226 topo_mod_strfree(mod, mod->tm_info->tmi_desc);
227 if (mod->tm_info->tmi_scheme != NULL)
228 topo_mod_strfree(mod, mod->tm_info->tmi_scheme);
230 topo_mod_free(mod, mod->tm_info, sizeof (topo_imodinfo_t));
232 mod->tm_info = NULL;
236 topo_mod_enumerate(topo_mod_t *mod, tnode_t *node, const char *enum_name,
242 assert(mod->tm_flags & TOPO_MOD_REG);
244 if ((enum_mod = topo_mod_lookup(mod->tm_hdl, enum_name, 0)) == NULL)
245 return (topo_mod_seterrno(mod, EMOD_MOD_NOENT));
249 topo_dprintf(mod->tm_hdl, TOPO_DBG_MODSVC, "module %s enumerating "
250 "node %s=%d\n", (char *)mod->tm_name, (char *)node->tn_name,
259 (void) topo_mod_seterrno(mod, EMOD_UKNOWN_ENUM);
261 topo_dprintf(mod->tm_hdl, TOPO_DBG_ERR,
263 " node %s=%d\n", (char *)mod->tm_name,
276 topo_mod_enummap(topo_mod_t *mod, tnode_t *node, const char *name,
279 return (topo_file_load(mod, node, (char *)name, (char *)scheme, 0));
283 set_fmri_err(topo_mod_t *mod, int err)
285 (void) topo_mod_seterrno(mod, err);
290 topo_mod_hcfmri(topo_mod_t *mod, tnode_t *pnode, int version, const char *name,
300 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
307 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
308 return (set_fmri_err(mod, EMOD_FMRI_NVL));
314 return (set_fmri_err(mod, EMOD_NVL_INVAL));
321 return (set_fmri_err(mod, EMOD_FMRI_NVL));
332 lpart = topo_cleanup_auth_str(mod->tm_hdl, part);
336 topo_hdl_free(mod->tm_hdl, lpart, strlen(lpart) + 1);
343 lrev = topo_cleanup_auth_str(mod->tm_hdl, rev);
347 topo_hdl_free(mod->tm_hdl, lrev, strlen(lrev) + 1);
354 lserial = topo_cleanup_auth_str(mod->tm_hdl, serial);
358 topo_hdl_free(mod->tm_hdl, lserial,
369 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_HC, name, inst,
372 return (set_fmri_err(mod, err));
377 (void) topo_mod_nvdup(mod, fmri, &nfp);
384 topo_mod_devfmri(topo_mod_t *mod, int version, const char *dev_path,
392 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
394 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
395 return (set_fmri_err(mod, EMOD_FMRI_NVL));
399 return (set_fmri_err(mod, EMOD_FMRI_NVL));
404 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_DEV,
407 return (set_fmri_err(mod, err));
412 (void) topo_mod_nvdup(mod, fmri, &nfp);
419 topo_mod_cpufmri(topo_mod_t *mod, int version, uint32_t cpu_id, uint8_t cpumask,
427 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
429 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
430 return (set_fmri_err(mod, EMOD_FMRI_NVL));
434 return (set_fmri_err(mod, EMOD_FMRI_NVL));
443 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_CPU,
446 return (set_fmri_err(mod, err));
451 (void) topo_mod_nvdup(mod, fmri, &nfp);
458 topo_mod_memfmri(topo_mod_t *mod, int version, uint64_t pa, uint64_t offset,
466 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
468 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
469 return (set_fmri_err(mod, EMOD_FMRI_NVL));
480 return (set_fmri_err(mod, EMOD_FMRI_NVL));
483 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_MEM,
486 return (set_fmri_err(mod, err));
491 (void) topo_mod_nvdup(mod, fmri, &nfp);
499 topo_mod_pkgfmri(topo_mod_t *mod, int version, const char *path)
506 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
508 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
509 return (set_fmri_err(mod, EMOD_FMRI_NVL));
513 return (set_fmri_err(mod, EMOD_FMRI_NVL));
516 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_PKG,
519 return (set_fmri_err(mod, err));
524 (void) topo_mod_nvdup(mod, fmri, &nfp);
531 topo_mod_modfmri(topo_mod_t *mod, int version, const char *driver)
538 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
540 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
541 return (set_fmri_err(mod, EMOD_FMRI_NVL));
545 return (set_fmri_err(mod, EMOD_FMRI_NVL));
548 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_MOD,
551 return (set_fmri_err(mod, err));
556 (void) topo_mod_nvdup(mod, fmri, &nfp);
566 topo_mod_swfmri(topo_mod_t *mod, int version,
578 return (set_fmri_err(mod, EMOD_FMRI_VERSION));
580 if (topo_mod_nvalloc(mod, &args, NV_UNIQUE_NAME) != 0)
581 return (set_fmri_err(mod, EMOD_FMRI_NVL));
609 return (set_fmri_err(mod, EMOD_FMRI_NVL));
612 if ((fmri = topo_fmri_create(mod->tm_hdl, FM_FMRI_SCHEME_SW,
615 return (set_fmri_err(mod, err));
620 (void) topo_mod_nvdup(mod, fmri, &nfp);
627 topo_mod_str2nvl(topo_mod_t *mod, const char *fmristr, nvlist_t **fmri)
632 if (topo_fmri_str2nvl(mod->tm_hdl, fmristr, &np, &err) < 0)
633 return (topo_mod_seterrno(mod, err));
635 if (topo_mod_nvdup(mod, np, fmri) < 0) {
637 return (topo_mod_seterrno(mod, EMOD_FMRI_NVL));
646 topo_mod_nvl2str(topo_mod_t *mod, nvlist_t *fmri, char **fmristr)
651 if (topo_fmri_nvl2str(mod->tm_hdl, fmri, &sp, &err) < 0)
652 return (topo_mod_seterrno(mod, err));
654 if ((*fmristr = topo_mod_strdup(mod, sp)) == NULL) {
655 topo_hdl_strfree(mod->tm_hdl, sp);
656 return (topo_mod_seterrno(mod, EMOD_NOMEM));
659 topo_hdl_strfree(mod->tm_hdl, sp);
665 topo_mod_getspecific(topo_mod_t *mod)
667 return (mod->tm_priv);
671 topo_mod_setspecific(topo_mod_t *mod, void *data)
673 mod->tm_priv = data;
677 topo_mod_setdebug(topo_mod_t *mod)
679 mod->tm_debug = 1;
683 topo_mod_ipmi_hold(topo_mod_t *mod)
685 topo_hdl_t *thp = mod->tm_hdl;
693 topo_dprintf(mod->tm_hdl, TOPO_DBG_ERR,
705 topo_mod_ipmi_rele(topo_mod_t *mod)
707 topo_hdl_t *thp = mod->tm_hdl;
713 topo_mod_devinfo(topo_mod_t *mod)
715 return (topo_hdl_devinfo(mod->tm_hdl));
719 topo_mod_smbios(topo_mod_t *mod)
721 topo_hdl_t *thp = mod->tm_hdl;
730 topo_mod_prominfo(topo_mod_t *mod)
732 return (topo_hdl_prominfo(mod->tm_hdl));
736 topo_mod_clrdebug(topo_mod_t *mod)
738 mod->tm_debug = 0;
743 topo_mod_dprintf(topo_mod_t *mod, const char *format, ...)
747 if (mod->tm_debug == 0)
751 topo_vdprintf(mod->tm_hdl, TOPO_DBG_MOD, (const char *)mod->tm_name,
757 topo_mod_product(topo_mod_t *mod)
759 return (topo_mod_strdup(mod, mod->tm_hdl->th_product));
763 topo_mod_server(topo_mod_t *mod)
768 return (topo_mod_strdup(mod, uts.nodename));
772 topo_mod_psn(topo_mod_t *mod)
777 if ((shp = topo_mod_smbios(mod)) == NULL ||
781 return (topo_cleanup_auth_str(mod->tm_hdl, psn));
785 topo_mod_csn(topo_mod_t *mod)
793 if ((shp = topo_mod_smbios(mod)) != NULL) {
799 } else if ((rooth = topo_mod_devinfo(mod)) != DI_NODE_NIL &&
800 (promh = topo_mod_prominfo(mod)) != DI_PROM_HANDLE_NIL) {
811 return (topo_cleanup_auth_str(mod->tm_hdl, csn));
815 topo_mod_auth(topo_mod_t *mod, tnode_t *pnode)
824 if ((err = topo_mod_nvalloc(mod, &auth, NV_UNIQUE_NAME)) != 0) {
825 (void) topo_mod_seterrno(mod, EMOD_FMRI_NVL);
842 prod = topo_mod_product(mod);
844 csn = topo_mod_csn(mod);
846 psn = topo_mod_psn(mod);
848 server = topo_mod_server(mod);
862 topo_mod_strfree(mod, prod);
866 topo_mod_strfree(mod, psn);
870 topo_mod_strfree(mod, server);
874 topo_mod_strfree(mod, csn);
879 (void) topo_mod_seterrno(mod, EMOD_NVL_INVAL);
887 topo_mod_walk_init(topo_mod_t *mod, tnode_t *node, topo_mod_walk_cb_t cb_f,
891 topo_hdl_t *thp = mod->tm_hdl;
893 if ((wp = topo_node_walk_init(thp, mod, node, (int (*)())cb_f, pdata,