816 uint64_t, curpic[i], uint64_t, cfgs[i]->opt_rawpic);
817 cfgs[i]->opt_rawpic = *addrs[i] & MASK48;
818 }
819 }
820
821 static void
822 opt_pcbe_free(void *config)
823 {
824 kmem_free(config, sizeof (opt_pcbe_config_t));
825 }
826
827
828 static struct modlpcbe modlpcbe = {
829 &mod_pcbeops,
830 "AMD Performance Counters",
831 &opt_pcbe_ops
832 };
833
834 static struct modlinkage modl = {
835 MODREV_1,
836 &modlpcbe,
837 };
838
839 int
840 _init(void)
841 {
842 int ret;
843
844 if (opt_pcbe_init() != 0)
845 return (ENOTSUP);
846
847 if ((ret = mod_install(&modl)) != 0)
848 kmem_free(evlist, evlist_sz + 1);
849
850 return (ret);
851 }
852
853 int
854 _fini(void)
855 {
856 int ret;
|
816 uint64_t, curpic[i], uint64_t, cfgs[i]->opt_rawpic);
817 cfgs[i]->opt_rawpic = *addrs[i] & MASK48;
818 }
819 }
820
821 static void
822 opt_pcbe_free(void *config)
823 {
824 kmem_free(config, sizeof (opt_pcbe_config_t));
825 }
826
827
828 static struct modlpcbe modlpcbe = {
829 &mod_pcbeops,
830 "AMD Performance Counters",
831 &opt_pcbe_ops
832 };
833
834 static struct modlinkage modl = {
835 MODREV_1,
836 { &modlpcbe, NULL }
837 };
838
839 int
840 _init(void)
841 {
842 int ret;
843
844 if (opt_pcbe_init() != 0)
845 return (ENOTSUP);
846
847 if ((ret = mod_install(&modl)) != 0)
848 kmem_free(evlist, evlist_sz + 1);
849
850 return (ret);
851 }
852
853 int
854 _fini(void)
855 {
856 int ret;
|