sys下面 proc下面,dev下面分别创建一个节点

来源:互联网 发布:ps源码是什么 编辑:程序博客网 时间:2024/04/29 19:58

/*proc/led节点创建*/


static viod led_create_proc(void){

struct proc_dir_entry*entry;

entry = create_proc_entry(DEVICE_NAME,0,NULL);


if(entry){

 entry ->read_proc = led_proc_read;

entry  ->write_proc = led_proc_write;

}

}

模块卸载 

remove_proc_entry(DEVICE_NAME,0,NULL);


sys 下面产生节点:

/* 访问设置属性方法*/

static ssize_t led_val_show(struct device * dev, struct device_attribute*attr,char*buf);

static ssize_t led_val_store( struct device* dev,struct device_attribute*attr, const char*buf ,size_t count);

static DEVICE_ATTR(val,S_IRUGO}S_IWUSR,led_val_show,led_val_store);


其中sys下面节点是二进制文件,直接读写,会有内核调用show store ,DEVICE_ATTR是定义给了device_attribute的变量,其变量名字为dev_attr_##val(##为替换)。本例中定义了dev-attr_val变量。之后调用:class_create device_create device_create_file产生属性文件,属性文件名字为val

led_class = class_create(THIS_MODULES,DEVICE_NAME);

temp = device_create(led_class,NULL,devID,“%s”,DEVICE_NAME); //devid为设备号

err = device_create_file(temp,&dev_attr_val);

产生了 sys   也产生了dev下面的节点

模块卸载 device_destroy(led_class,MKDEV(led_major,led_minor));

class_destroy(led_class);



0 0
原创粉丝点击