subsys_interface_register

这行code是啥意思呢? 
subsys_interface_register(&cpufreq_interface);
1576 static struct subsys_interface cpufreq_interface = {
1577         .name           = "cpufreq",
1578         .subsys         = &cpu_subsys,
1579         .add_dev        = cpufreq_add_dev,
1580         .remove_dev     = cpufreq_remove_dev,
1581 };
我们看看subsys_interface_register的实现。
1125 int subsys_interface_register(struct subsys_interface *sif)
1126 {
1127         struct bus_type *subsys;
1128         struct subsys_dev_iter iter;
1129         struct device *dev;
1130 
1131         if (!sif || !sif->subsys)
1132                 return -ENODEV;
1133 
1134         subsys = bus_get(sif->subsys);
1135         if (!subsys)
1136                 return -EINVAL;
1137 
1138         mutex_lock(&subsys->p->mutex);
1139         list_add_tail(&sif->node, &subsys->p->interfaces);
1140         if (sif->add_dev) {
1141                 subsys_dev_iter_init(&iter, subsys, NULL, NULL);
1142                 while ((dev = subsys_dev_iter_next(&iter)))
1143                         sif->add_dev(dev, sif);
1144                 subsys_dev_iter_exit(&iter);
1145         }
1146         mutex_unlock(&subsys->p->mutex);
1147 
1148         return 0;
1149 }


1134行subsys就等于1578行的cpu_sybsys.
1140行的sif->add_dev 就等1579行的cpufreq_add_dev,所以肯定不为NULL。
1142行会遍历cpu_sybsys,为每一个cpu调用cpufreq_add_dev 方法。也就是有几个cpu,cpufreq_add_dev 方法就没调用几次。
从这里可以看到每个cpu可以有不同的governer.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值