嵌入式Linux设备驱动程序开发指南(原书第2版)
上QQ阅读APP看书,第一时间看更新

3.9 实验3-3:“helloworld计时”模块

这个新的内核模块会在卸载时显示从驱动被加载以来经过的时间(以秒为单位)。

你将使用位于kernel/time/keeping.c文件中的do_gettimeofday()函数来实现该任务。该函数在被调用时会在timeval数据结构中填充秒和微秒信息。timeval数据结构定义如下:

073-01

该驱动的主要代码段描述如下:

1. 包含定义了do_gettimeofday()函数原型的头文件:

073-02

2. 在#include语句之后,声明一个timeval数据结构用于保存模块加载和卸载的时间。

073-03

3. 当模块被卸载时,计算时间差。

073-04

在接下来的代码清单3-4中查看针对i.MX7D处理器的“helloworld计时”驱动源代码(helloworld_imx_with_timing.c)。

注意:针对SAMA5D2(helloworld_sam_with_timing.c)和BCM2837(helloworld_rpi_with_timing.c)的驱动源代码可以从本书的GitHub仓库下载。