linux sys属性节点创建
来源:互联网 发布:华为云计算怎么样 编辑:程序博客网 时间:2024/04/30 06:20
#include <linux/module.h>#include <linux/slab.h>#include <linux/kobject.h>#include <linux/platform_device.h>struct att_dev{struct platform_device *pdev;struct kobject *kobj;};static ssize_t att_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {printk("echo debug buf\n");return count;}static ssize_t att_show(struct device *dev, struct device_attribute *attr, char *buf){printk("cat debug buf\n");return 0;}static DEVICE_ATTR(test,0777,att_show,att_store);static struct att_dev *dev = NULL;static __devinit int att_probe(struct platform_device *ppdev){int ret;dev->kobj = kobject_create_and_add("attkobj", NULL); if(dev->kobj == NULL){ret = -ENOMEM;goto kobj_err;}ret = sysfs_create_file(&dev->pdev->dev.kobj,&dev_attr_test.attr);if(ret < 0){goto file_err;}return 0;file_err: kobject_del(dev->kobj); kobj_err:return ret;}static struct platform_driver att_driver = {.probe = att_probe,.driver = {.owner = THIS_MODULE,.name = "att_test",},};static int __init att_init(void){int ret;dev = kzalloc(sizeof(struct att_dev),GFP_KERNEL);if(dev == NULL){printk("%s get dev memory error\n",__func__);return -ENOMEM;}dev->pdev = platform_device_register_simple("att_test", -1, NULL, 0); if(IS_ERR(dev->pdev)){PTR_ERR(dev->pdev); printk("%s pdev error\n",__func__);return -1;} ret = platform_driver_register(&att_driver); if(ret < 0){ printk("%s register driver error\n",__func__); return ret; }return 0;}static void __exit att_exit(void){}module_init(att_init);module_exit(att_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("driverSir");
Makefile原代码:
ifeq ($(KERNELRELEASE),)
#KERNEL_DIR:=/lib/modules/$(shell uname -r)/build/
KERNEL_DIR:=/usr/src/linux-headers-3.2.0-29-generic-pae
PWD:=$(shell pwd)
modules:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNEL_DIR) M=$(PWD) modules_install
clean:
rm -rf .*.cmd *.ko *.o modules.order Module.symvers *mod.c
.PHONY: modules modules_install clean
else
modules-objs := att.o
obj-m := att.o
endif
安装之后/sys/devices/platform/att_test/test
echo 1 > test
cat test
dmesg之后会看到内核打印出
[ 424.793357] echo debug buf
[ 427.122139] cat debug buf
说明在echo 1 > test 时调用了att_store,cat test 的时候调用了att_show
- linux sys属性节点创建
- linux sys节点属性
- 驱动学习--SYS属性节点创建
- linux sys节点属性 show以及store
- linux 创建sys debug节点范例
- Linux 增加sys节点技巧
- Linux 增加sys节点技巧
- sys/class 下文件节点创建实例
- 在/sys/class下创建访问节点
- jQuery创建属性节点
- Linux内核sysfs中文件节点及属性的创建
- 在/sys下面创建属性文件
- linux读写属性节点
- jquery DOM创建节点及节点属性
- DOM创建节点及节点属性
- DOM创建节点及节点属性
- 创建3个节点。sys下面和proc、dev下面。
- sys下面 proc下面,dev下面分别创建一个节点
- mySQL常用命令、语句
- Qt 编写DLL 并调用
- 个性化推荐十大挑战[科普+完整版本]
- SQL 数据库Sa账号密码不能更改问题
- Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建
- linux sys属性节点创建
- asp.net跳转页面的三种方法比较
- DOTNETBAR的使用方法(转)
- C++Primer第五版【笔记】——第九章——顺序容器
- 谷歌面试题:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
- Spring声明式事务配置管理方法
- 开机登录时取消Ctrl+Alt+Delete
- 数学之美番外篇:平凡而又神奇的贝叶斯方法
- simple_hash_list