首先介绍函数:create_proc_entry(const char *name,mode_t mode,struct proc_dir_entry *base);
name是要创建的文件的名称,
mode是该文件的保护掩码(可传入0表示系统默认值)
base指定该文件所在目录(如果base为NULL,则该文件将创建在/proc的根目录)
关于proc文件的使用在《linu设备驱动程序》P88
首先定义结构体
struct file_operations led = {
read:proc_read_led,
write:proc_write_led,
ioctl:NULL,
};
创建"/proc/LED"文件
proc=create_proc_entry("LED",0777,NULL);
proc->proc_fops = &led;
当用户空间程序调用系统调用read函数读"/proc/LED"的时候就会调用proc_read_led函数
ssize_t proc_read_led(struct file *filp,char *buf,size_t count,loff_t *offp)
{
char tmp[300];
int len = 0;
int speed = 100;
if(*offp!=0)
return 0;
len += sprintf(tmp,"WAN:UP %s\n",speed)
len += sprintf(tmp+len,"LAN%d:DOWN\n",speed);
copy_to_user(buf,tmp,len);
*offp = len;
return len
}
在用户空间访问"proc/LED"会得到如下结果
#cat /proc/LED
WAN:UP 100
LAN100:DOWN