linux设备模型中的class
来源:互联网 发布:win10优化设置在哪里 编辑:程序博客网 时间:2024/05/18 00:14
在linux下使用class的功能
硬/软件环境:s3c2440/linux-2.6.36/busybox-1.18.4/arm-linux-gcc 4.4.3
下面是模块的c代码:
#include<linux/module.h>
#include<linux/init.h>
#include<linux/fs.h>
#include<linux/cdev.h>
#include<linux/mm.h>
#include<linux/ioport.h>
#include<linux/interrupt.h>
#include<linux/delay.h>
#include<linux/device.h>
#include<linux/platform_device.h>
#include<asm/io.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zhanglong");
//----------------------------
struct class*zl_class;
struct class_device *test_cla_dev;
struct zl_device {
struct device dev;
dev_t no;
};
struct zl_device zl_dev = {
.no = MKDEV(52,0),
};
int test_init(void)
{
int ret = 0;
zl_class = class_create(THIS_MODULE,"zl_class");
test_cla_dev = device_create(zl_class,NULL, zl_dev.no,&(zl_dev.dev),"zldev_name");
return ret;
}
void test_exit(void)
{
class_destroy(zl_class);
}
module_init(test_init);
module_exit(test_exit);
下面是Makefile文件内容:
#KERNEL = /home/zl/my2440-2.6.13
KERNEL = /media/STUDY/linux/kernel/my2440-2.6.36
#KERNEL = /lib/modules/$(shell uname-r)/build
default:
make -C $(KERNEL) M=$(shell pwd) modules
clean:
make -C $(KERNEL) M=$(shell pwd) modules clean
modules_install:
make -C $(KERNEL) M=$(shell pwd) modules_install INSTALL_MOD_PATH=/home/zl/s3c2440_nfs
depmod -a -b /home/zl/s3c2440_nfs 2.6.36-my2440
obj-m += driver.o
执行make命令后,“insmod driver.ko”插入模块后
在/sys/class目录下有相应名称的文件夹zl_class生成(执行class_create函数后)
在/sys/class/zl_class目录下有zldev_name文件夹生成(执行device_create函数后)
由于已经启用了mdev, /dev目录下会有名为zldev_name的设备文件生成,其设备号是device_create函数中传入的设备号。
/sys/devices/virtual #
/sys/devices/virtual # ls -l zl_class/zldev_name/
total 0
-r--r--r-- 1 root root 4096 May 16 14:12 dev
drwxr-xr-x 2 root root 0 May 16 14:13 power
lrwxrwxrwx 1 root root 0 May 16 14:13 subsystem -> ../../../../class/zl_class
-rw-r--r-- 1 root root 4096 May 16 14:13 uevent
/sys/devices/virtual #
/sys/class #
/sys/class # ls -l zl_class/zldev_name/
total 0
-r--r--r-- 1 root root 4096 May 16 14:12 dev
drwxr-xr-x 2 root root 0 May 16 14:13 power
lrwxrwxrwx 1 root root 0 May 16 14:13 subsystem -> ../../../../class/zl_class
-rw-r--r-- 1 root root 4096 May 16 14:13 uevent
/sys/class #
/dev #
/dev # ls -l zldev_name
crw-rw---- 1 root root 52, 0 May 16 14:12 zldev_name
/dev #
- linux设备模型中的class
- linux设备模型中的class
- Linux 设备驱动模型中的class(类)
- Linux 设备驱动模型中的class(类)
- Linux 设备驱动模型中的class(类)
- Linux 设备驱动模型中的class(类)
- Linux 设备驱动模型中的class(类)
- Linux 设备驱动模型中的class(类)
- linux设备模型之Class
- linux设备模型之Class
- linux设备模型之Class
- linux设备驱动模型--class
- Linux设备模型(四)class
- linux设备驱动模型十之class
- LINUX设备驱动模型之class
- linux设备驱动模型之class
- linux内核设备模型中的设备
- linux 设备驱动模型 class 设备结点文件 热插拔
- 周鸿祎:创业前的积累很重要
- 连webservice时SoapObject对象找不到
- 为针对于SimpleDB的Rails应用程序配置solr支持
- platform设备与设备driver之间的关系
- 社会化媒体营销技巧与策略
- linux设备模型中的class
- sigprocmask()函数解释
- cdev, platform_device, device_driver, class大杂烩
- HDU 2161 Primes 判断素数
- JavaScript代码为什么飞不起来?难道是用的WIN7的缘故?求解释
- 利用JDK7的NIO2.0进行I/O读写和文件操作监控
- 黑马程序员——交通灯总结
- Linux下Java环境的安装和配置 (CentOS+JDK1.5.0_11)
- C++中如何使类不能继承 [转]