驱动程序:Virtualmen.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/cdev.h>
#include <linux/mm.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/device.h>
#include <asm/uaccess.h>
#define MEM_CLEAR 0x1 /*全局内存清零指令*/
#define VIRTUALMEM_SIZE 0x1000 /*全局内存最大4k字节*/
#define VIRTUALMEM_MAJOR 0 /*预设的Virtualmen的主设备号*/
typedef u_long dev_t;
dev_t devno;
struct class *my_class = NULL;
static int Virtualmen_major = VIRTUALMEM_MAJOR ;
/*Virtualmen 设备结构体*/
struct Virtualmen_dev
{
struct cdev cdev;/*cdev 结构体*/
unsigned char men[];/*全局内存*/
};
struct Virtualmen_dev *Virtualmen_devp;/*设备结构体指针*/
/********************************************************
*名称:Virtualmen_open()
*功能:设备文件打开函数,对应用户空间open系统调用;
*********************************************************/
static int Virtualmen_open(struct inode *inode,struct file *filp)
{
struct Virtualmen_dev *dev;
/*通过inode的i_cdev结构得到定义的Virtualmen_dev指针*/
dev = container_of(inode->i_cdev,struct Virtualmen_dev,cdev);
filp->private_data = dev;/*将Virtualmen_dev指针保存到file结构中的private_date中*/
return 0;
}
/**********************************************************
*名称:Virtualmen_release()
*功能:设备文件释放函数,对应用户空间close系统调用;
***********************************************************/
static int Virtualmen_release(struct inode *inode,struct fil