当前位置:嗨网首页>书籍在线阅读

09-头文件、宏及设备结构体

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

6.3.1 头文件、宏及设备结构体

在globalmem字符设备驱动中,应包含它要使用的头文件,并定义globalmem设备结构体及相关宏。

代码清单6.8 globalmem设备结构体和宏

1 #include <linux/module.h>

2 #include <linux/types.h>

3 #include <linux/fs.h>

4 #include <linux/errno.h>

5 #include <linux/mm.h>

6 #include <linux/sched.h>

7 #include <linux/init.h>

8 #include <linux/cdev.h>

9 #include <asm/io.h>

10 #include <asm/system.h>

11 #include <asm/uaccess.h>

12

13 #define GLOBALMEM_SIZE 0x1000 /全局内存大小:4KB/

14 #define MEM_CLEAR 0x1 /清零全局内存/

15 #define GLOBALMEM_MAJOR 250 /预设的globalmem的主设备号/

16

17 static int globalmem_major = GLOBALMEM_MAJOR;

18 /globalmem设备结构体/

19 struct globalmem_dev {

20 struct cdev cdev; /cdev结构体/

21 unsigned char mem[GLOBALMEM_SIZE]; /全局内存/

22 };

23

24 struct globalmem_dev dev; /设备结构体实例/

从第19~22行代码可以看出,定义的globalmem_dev设备结构体包含了对应于globalmem字符设备的cdev、使用的内存mem[GLOBALMEM_SIZE]。当然,程序中并不一定要把mem[GLOBALMEM_SIZE]和cdev包含在一个设备结构体中,但这样定义的好处在于,它借用了面向对象程序设计中“封装”的思想,体现了一种良好的编程习惯。