2016-10-18 20 views
1

我嘗試從內核空間設置RTC。但rtc_set_time()被阻止並不返回。打印出"111",而不打印"222"如何在內核空間中設置rtc時間?

如何在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

rtc_set_ntp_time()在systohc.c文件中的確類似。它調用rtc_class_open()得到rtc_dev,它調用try_module_get()以確保該模塊未被刪除。

不知道try_module_get()是否解決了這個問題,但這當然是件好事。

+0

感謝您的提示。 – AndreyKeen

+1

'rtc_dev = rtc_class_open(CONFIG_RTC_HCTOSYS_DEVICE);' – AndreyKeen

+0

很高興幫助:) – bytefire

相關問題