我尝试从内核空间设置RTC。但rtc_set_time()
正在阻止而且不会返回。 "111"
已打印,"222"
未打印。
如何在Linux(2.6.32)内核空间中设置RTC时间?
struct device *dev = NULL;
struct rtc_device *rtc_dev = NULL;
struct rtc_time rtc_tm;
/* set rtc_tm */
/* ... */
dev = bus_find_device_by_name(&platform_bus_type, NULL, "at91_rtt.0");
if (!dev) {
printk(KERN_INFO "%s: NOT FIND DEVICE\n", __FUNCTION__);
return -1;
}
rtc_dev = to_rtc_device(dev);
printk(KERN_INFO "%s: 111\n", __FUNCTION__);
ret = rtc_set_time(rtc_dev, &rtc_tm);
printk(KERN_INFO "%s: 222\n", __FUNCTION__);
答案 0 :(得分:0)
rtc_set_ntp_time()类似。它调用rtc_class_open()来获取调用rtc_dev
的{{1}},以确保该模块尚未被删除。
不确定try_module_get()
是否解决了问题,但这肯定是件好事。