一、是什么?
将文件的私有数据private_data指向设备的结构体
contain_of()作用就是通过结构体成员的指针找到对应结构体的指针,
contain_of(inode->i_cdev,struct globalmem_dev,cdev)
(1)结构体成员的指针
(2)整个结构体的类型
(3)传入第一个参数的结构体成员的类型.
(4)返回值为整个结构体的指针
sprintf(buf,"global_dev%d",index); //整形转换字符串
二、使用步骤
1.引入库
代码如下(示例):
#include<linux/module.h>
#include<linux/fs.h>
#include<linux/init.h>
#include<linux/cdev.h>
#include<linux/slab.h>
#include<linux/uaccess.h>
#include<linux/device.h>
static int debug = 1;
module_param(debug,int,0644);
MODULE_PARM_DESC(debug,"enable debuging infomation");
#define dprintk(args...)\
if(debug){
\
printk(KERN_DEBUG args);\
}
#define GLOBALMEM_SIZE 0x1000
#define MEM_CLEAR 0x01
#define GLOBALMEM_MAJOR 230
#define DEVICE_NUM 10
static int globalmem_major = GLOBALMEM_MAJOR;
module_param(globalmem_major,int,S_IRUGO);
struct globalmem_dev{
struct cdev cdev;
unsigned char mem[GLOBALMEM_SIZE];
};
struct globalmem_dev*globalmem_devp;
static struct class*global_mem_class;