Ai
1 Star 0 Fork 0

flameboyence/linux_driver_example

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
chrdev.c 2.02 KB
一键复制 编辑 原始数据 按行查看 历史
zkw 提交于 2020-11-01 19:05 +08:00 . 初始化
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/io.h>
#define CHRDEV_MAJOR 200 //主设备号
#define CHRDEV_NAME "chrdev" //名字
static char readbuf[100]; /*读缓冲 */
static char writebuf[100]; /* 写缓冲 */
static char kerneldata[] = {"kernel data!"};
static int chrdev_open(struct inode *inode, struct file *filp)
{
// printk("chrdev_open\r\n");
return 0;
}
static int chrdev_release(struct inode *inode, struct file *filp)
{
// printk("chrdev_release\r\n");
return 0;
}
static ssize_t chrdev_read(struct file *filp, __user char *buf, size_t count,
loff_t *ppos)
{
int ret = 0;
//printk("chrdev_read\r\n");
memcpy(readbuf, kerneldata, sizeof(kerneldata));
ret = copy_to_user(buf, readbuf, count);
if(ret == 0) {
} else {
}
return 0;
}
static ssize_t chrdev_write(struct file *filp, const char __user *buf,
size_t count, loff_t *ppos)
{
int ret = 0;
//printk("chrdev_write\r\n");
ret = copy_from_user(writebuf, buf, count);
if(ret == 0) {
printk("kernel recevdata:%s\r\n", writebuf);
} else {
}
return 0;
}
/*
* 字符设备 操作集合
*/
static struct file_operations chrdev_fops={
.owner = THIS_MODULE,
.open = chrdev_open,
.release = chrdev_release,
.read = chrdev_read,
.write = chrdev_write,
};
static int __init chrdev_init(void)
{
int ret = 0;
printk("chrdev_init\r\n");
/* 注册字符设备 */
ret = register_chrdev(CHRDEV_MAJOR, CHRDEV_NAME, &chrdev_fops);
if(ret < 0) {
printk("chrdev init failed!\r\n");
}
return 0;
}
static void __exit chrdev_exit(void)
{
printk("chrdev_exit\r\n");
/* 注销字符设备 */
unregister_chrdev(CHRDEV_MAJOR, CHRDEV_NAME);
}
/*
模块入口与出口
*/
module_init(chrdev_init); /* 入口 */
module_exit(chrdev_exit); /* 出口 */
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zkw");
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/flameboyence/linux_driver_example.git
git@gitee.com:flameboyence/linux_driver_example.git
flameboyence
linux_driver_example
linux_driver_example
master

搜索帮助