Linux内核驱动的示例

此项目是Linux内核驱动的示例。

应用介绍

此项目是Linux内核驱动的示例。


#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/cdev.h>
#include <linux/version.h>
#include <linux/vmalloc.h>
#include <linux/ctype.h>
#include <linux/pagemap.h>
#include "demo.h"
MODULE_AUTHOR("fgj");
MODULE_LICENSE("Dual BSD/GPL");
static unsigned char simple_inc=0;
static unsigned char demoBuffer[256];
int simple_open(struct inode *inode, struct file *filp)
{
 if(simple_inc>0)return -ERESTARTSYS;
 simple_inc++;
 return 0;
}
int simple_release(struct inode *inode, struct file *filp)
{
 simple_inc--;
 return 0;
}
ssize_t simple_read(struct file *filp, char __user *buf, size_t count,loff_t *f_pos)
{
 /* 把数据拷贝到应用程序空间 */
 if (copy_to_user(buf,demoBuffer,count))
 {
    count=-EFAULT; 
 }
 return count;
}
ssize_t simple_write(struct file *filp, const char __user *buf, size_t count,loff_t *f_pos)
{
 /* 把数据拷贝到内核空间 */
 if (copy_from_user(demoBuffer+*f_pos, buf, count))
 {
  count = -EFAULT;
 }
 return count;
}
struct file_operations simple_fops = {
 .owner =    THIS_MODULE,
 .read =     simple_read,
 .write =    simple_write,
 .open =     simple_open,
 .release =  simple_release,
};
/*******************************************************
                MODULE ROUTINE
*******************************************************/
void simple_cleanup_module(void)
{
    unregister_chrdev(simple_MAJOR,  "simple"); 
 printk("simple_cleanup_module!\n");
}
int simple_init_module(void)
{
 int ret;
 //注册字符设备
 ret = register_chrdev(simple_MAJOR, "simple", &simple_fops);
 if (ret < 0)
 {
  printk("Unable to register character device %d!\n",simple_MAJOR);
  return ret;
 }
 return 0;
}
module_init(simple_init_module);
module_exit(simple_cleanup_module);

想了解详情请下载附件。

文件列表(部分)

名称 大小 修改日期
check.sh0.07 KB2019-06-13
demo.c0.75 KB2019-06-13
demo.h0.55 KB2019-06-13
Makefile0.15 KB2019-06-13
load0.43 KB2019-06-13
Makefile0.17 KB2019-06-13
scullc.c2.12 KB2019-06-13
scullc.h0.46 KB2019-06-13
test.c0.15 KB2019-06-13
unload0.14 KB2019-06-13
load0.43 KB2019-06-13
Makefile0.16 KB2019-06-13
output.sh0.16 KB2019-06-13
scullpipe.c1.53 KB2019-06-13
scullpipe.h0.55 KB2019-06-13
unload0.14 KB2019-06-13
Makefile0.17 KB2019-06-13
short.c0.24 KB2019-06-13
demo0.00 KB2019-06-13
scull0.00 KB2019-06-13
scullpipe0.00 KB2019-06-13
short0.00 KB2019-06-13
mydriver0.00 KB2020-08-02

立即下载

相关下载

[Linux内核驱动的示例] 此项目是Linux内核驱动的示例。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部