日期:2014-05-16  浏览次数:20678 次

LINUX驱动分析之RTC(四)

 

*****************************************************************************************************/
声明:本博内容均由
http://blog.csdn.net/lmm670原创,转载请注明出处,谢谢!
/****************************************************************************************************/

 

这一节我们分析RTC驱动框架的最上层rtc-dev.c

 

 /

系统起来的时候,rtc_dev_init会被调用,此函数生成了文件/dev/rtc.

501行:把操作集rtc_dev_fops分配给/dev/rtc,而函数rtc_dev_prepare就是在rtc-s3c.c中注册RTC驱动时被调用的;

 

现在上层的接口文件/dev/rtc有了,它的操作集也有了rtc_dev_fops

 

static const struct file_operations rtc_dev_fops = {

         .owner               = THIS_MODULE,

         .llseek                = no_llseek,

         .read                  = rtc_dev_read,

         .poll           = rtc_dev_poll,

         .unlocked_ioctl         = rtc_dev_ioctl,

         .open                 = rtc_dev_open,

         .release   = rtc_dev_release,

         .fasync               = rtc_dev_fasync,

};

接下来我们就看看上层是如何最终设置RTC的。

流程大致如下:

首先上层程序会去open文件/dev/rtc,得到一个文件描述符;接下来就可以对她为所欲为了:

比如:设置RTC时间,上层通过ioctl