sys下面 proc下面,dev下面分别创建一个节点
2013-12-23 19:00
417 查看
/*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);
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);
相关文章推荐
- 创建3个节点。sys下面和proc、dev下面。
- 三款工作流引擎比较:WWF、netBPM 和 ccflow 下面将对目前比较主流的三款工作流进行介绍和比较,然后通过三款流程引擎分别设计一个较典型的流程来给大家分别演示这三款创建流程的过程.这
- linux中在/dev/下手动创建设备节点
- 用头插、尾插、按顺序插入创建一个不带头节点的链表
- 创建一个路由节点struct fib_node
- sys目录devices、dev等目录的创建
- 创建一个简单的device_create_file文件节点
- 创建一个procfs文件系统的节点
- 从drawable下面的图片 创建一个Bitmap
- linux中在/dev/下手动创建设备节点
- 在RAC一个节点上创建数据库时ORA-29702
- 2012年7月4日 题:创建一个 10节点 内容随机但不重复的 链表
- c#.net对excel的操作——创建一个excel报表两个sheet就是2个表分别添加内容
- Linux下面究竟什么是symbolic link, 怎样创建一个symbolic link
- 90页第三题,创建一个 Rectangle类,添加width和lenght两个成员变量 在 Rectangle类中添加两种方法分别计算矩形的周长和面积 ,编程利用Rectangle输出一个矩形的
- Java递归算法给基于dom4j创建一个完全相同的节点(包括属性、子节点和文本等)
- 尝试创建一个父类和子类,分别创建一个构造方法,然后向父类和子类添加成员变量和方法,并总结构造子类对象时的顺序。
- 下面创建一个链接数据库的开发实例