#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/miscdevice.h>
#include <linux/fs.h>
#include <linux/cdev.h>
static struct class *cls;
static struct device *device;
static dev_t dev_num;
static struct cdev cdev = {
.owner = THIS_MODULE,
};
int my_open(struct inode *inode, struct file *fp)
{
printk("open......\n");
return 0;
}
ssize_t my_read(struct file *fp, char __user *puser, size_t size, loff_t *off)
{
printk("read......\n");
return 0;
}
ssize_t my_write(struct file *fp, const char __user *puser, size_t size, loff_t *off)
{
printk("write......\n");
return 0;
}
int my_close(struct inode *inode, struct file *fp)
{
printk("close......\n");
return 0;
}
static struct file_operations fops = {
.owner = THIS_MODULE,
.open = my_open,
.read = my_read,
.write = my_write,
.release = my_close,
};
static int __init test_init(void)
{
int ret = 0;
printk("test_init.....\n");
//动态分配设备号
ret = alloc_chrdev_region(&dev_num, 0, 1, "ddev");
if (ret < 0)
{
printk("alloc_chrdev_region failed.....\n");
return 1;
}
printk("major = %d minor: %d\n", MAJOR(dev_num), MINOR(dev_num));
printk("alloc_chrdev_region OK.....\n");
//初始化cdev
cdev_init(&cdev, &fops);
//字符设备添加到内核
cdev_add(&cdev, dev_num, 1);
//创建设备类
cls = class_create(THIS_MODULE, "chardev_class");
//创建设备
device = device_create(cls, NULL, dev_num, NULL, "char_device");
return 0;
}
static void __exit test_exit(void)
{
unregister_chrdev_region(dev_num, 1);
cdev_del(&cdev);
//销毁设备
device_destroy(cls, dev_num);
//设备类销毁
class_destroy(cls);
printk("test_exit......\n");
}
module_init(test_init);
module_exit(test_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Jin.Deng");
MODULE_INFO(intree, "Y");
没有合适的资源?快使用搜索试试~ 我知道了~
10device-create.rar
共14个文件
c:3个
cmd:3个
o:2个
需积分: 0 0 下载量 60 浏览量
2024-04-30
12:11:15
上传
评论
收藏 141KB RAR 举报
温馨提示
Linux是文件型系统,所有硬件都会在对应的目录(/dev)下面用相应的文件表示。 在windows系统中,设备大家很好理解,像硬盘,磁盘指的是实实在在硬件。 而在文件系统的linux下面,都有对于文件与这些设备关联的,访问这些文件就可以访问实际硬件。 像访问文件那样去操作硬件设备,一切都会简单很多,不需要再调用以前com,prt等接口了。 直接读文件,写文件就可以向设备发送、接收数据。 按照读写存储数据方式,我们可以把设备分为以下几种:字符设备、块设备和网络设备。 **字符设备**:指应用程序按字节/字符来读写数据的设备。 这些设备节点通常为传真、虚拟终端和串口调制解调器、键盘之类设备提供流通信服务, 它通常不支持随机存取数据。字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。 例如,键盘这种设备提供的就是一个数据流,当你敲入“cnblogs”这个字 符串时, 键盘驱动程序会按照和输入完全相同的顺序返回这个由七个字符组成的数据流。它们是顺序的,先返回c,最后是s。
资源推荐
资源详情
资源评论
收起资源包目录
10device_create.rar (14个子文件)
10device_create
test.c 2KB
modules.order 53B
.tmp_versions
test.mod 91B
.test.o.cmd 30KB
Makefile 245B
app.c 383B
app 13KB
test.mod.o 87KB
test.ko 233KB
test.o 150KB
.test.mod.o.cmd 27KB
test.mod.c 508B
Module.symvers 0B
.test.ko.cmd 359B
共 14 条
- 1
资源评论
沧海一笑-dj
- 粉丝: 3w+
- 资源: 336
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 教学内容及补充-cha7.rar
- 设计1.ms14
- vscode-1.64.1.tar源码文件
- vscode-1.64.0.tar源码文件
- vscode-1.52.0.tar源码文件
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功