(6)2.4之前的字符驱动-用devfs_register自动生成设备文件(可能在2.6linux目录树下编译不了)
来源:互联网 发布:淘宝秒杀怎样快 编辑:程序博客网 时间:2024/06/06 05:54
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/irq.h>
#include <linux/delay.h>
#define MYMAJOR 200
#define MYNAME "chardev"
int mymajor ;
devfs_handle_t devfs_handle;
static int test_chardev_open(struct inode *inode,struct file *file)
{
printk(KERN_INFO "test chardev_open\n");
return 0;
}
static int test_chardev_release(struct inode *inode,struct file *file){
printk(KERN_INFO "test chardev_release\n");
return 0;
}
static ssize_t test_chardev_read(struct file *file,char __user *buf,size_t size, loff_t *ppos)
{
printk(KERN_INFO " test read\n");
return 0;
}
static ssize_t test_chardev_write(struct file *file,
const char __user *ubuf,size_t count,loff_t * ppos){
printk(KERN_INFO " test write\n");
return 0;
}
static const struct file_operations test_fops={
.owner=THIS_MODULE,
.open=test_chardev_open,
.release=test_chardev_release,
.write=test_chardev_write,
.read=test_chardev_read,
};
static int __init chardev_init(void)
{ int ret=-1;
//int devfs_handle=0;
printk(KERN_INFO "jimmy module chardev init");
mymajor=register_chrdev(0,MYNAME,&test_fops);
if(mymajor<0)
{
printk(KERN_ERR "register_chrdev fail\n");
return -EINVAL;
}
printk(KERN_INFO "register_chrdev success...myjor=%d.\n",mymajor);
devfs_handle = devfs_register(NULL, MYNAME,DEVFS_FL_DEFAULT,mymajor, 0, S_IFCHR | S_IRUSR | S_IWUSR, &test_fops, NULL);
return 0;
}
static void __exit chardev_exit(void)
{
printk(KERN_INFO "jimmy module chardev exit\n");
unregister_chrdev(MYMAJOR, MYNAME);
}
module_init(chardev_init);
module_exit(chardev_exit);
// MODULE_xxx这种宏作用是用来添加模块描述信息
MODULE_LICENSE("GPL"); // 描述模块的许可证
MODULE_AUTHOR("aston"); // 描述模块的作者
MODULE_DESCRIPTION("module test"); // 描述模块的介绍信息
MODULE_ALIAS("alias xxx"); // 描述模块的别名信息
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
#include <linux/irq.h>
#include <linux/delay.h>
#define MYMAJOR 200
#define MYNAME "chardev"
int mymajor ;
devfs_handle_t devfs_handle;
static int test_chardev_open(struct inode *inode,struct file *file)
{
printk(KERN_INFO "test chardev_open\n");
return 0;
}
static int test_chardev_release(struct inode *inode,struct file *file){
printk(KERN_INFO "test chardev_release\n");
return 0;
}
static ssize_t test_chardev_read(struct file *file,char __user *buf,size_t size, loff_t *ppos)
{
printk(KERN_INFO " test read\n");
return 0;
}
static ssize_t test_chardev_write(struct file *file,
const char __user *ubuf,size_t count,loff_t * ppos){
printk(KERN_INFO " test write\n");
return 0;
}
static const struct file_operations test_fops={
.owner=THIS_MODULE,
.open=test_chardev_open,
.release=test_chardev_release,
.write=test_chardev_write,
.read=test_chardev_read,
};
static int __init chardev_init(void)
{ int ret=-1;
//int devfs_handle=0;
printk(KERN_INFO "jimmy module chardev init");
mymajor=register_chrdev(0,MYNAME,&test_fops);
if(mymajor<0)
{
printk(KERN_ERR "register_chrdev fail\n");
return -EINVAL;
}
printk(KERN_INFO "register_chrdev success...myjor=%d.\n",mymajor);
devfs_handle = devfs_register(NULL, MYNAME,DEVFS_FL_DEFAULT,mymajor, 0, S_IFCHR | S_IRUSR | S_IWUSR, &test_fops, NULL);
return 0;
}
static void __exit chardev_exit(void)
{
printk(KERN_INFO "jimmy module chardev exit\n");
unregister_chrdev(MYMAJOR, MYNAME);
}
module_init(chardev_init);
module_exit(chardev_exit);
// MODULE_xxx这种宏作用是用来添加模块描述信息
MODULE_LICENSE("GPL"); // 描述模块的许可证
MODULE_AUTHOR("aston"); // 描述模块的作者
MODULE_DESCRIPTION("module test"); // 描述模块的介绍信息
MODULE_ALIAS("alias xxx"); // 描述模块的别名信息
阅读全文
0 0
- (6)2.4之前的字符驱动-用devfs_register自动生成设备文件(可能在2.6linux目录树下编译不了)
- 在aspx中的Controls编译过后自动生成了一个新的ID,而之前写js脚本用的ID,肯定是running不了
- Linux驱动开发二:自动获得设备节点在/dev/目录下
- linux驱动中在/proc虚拟文件系统目录下自动创建设备
- linux驱动中在/proc虚拟文件系统目录下自动创建设备【转】
- 在linux 2.6内核下建立字符设备,自动获取设备号,建立设备节点的简单例子
- linux下的字符设备驱动
- linux下的字符设备驱动
- linux字符设备驱动之设备节点的自动创建
- 字符设备驱动高级篇3——自动创建字符设备驱动的设备文件
- winform程序在编译时,如何自动将文件生成到debug目录下?
- [linux设备驱动程序]scull字符设备驱动编译在新内核编译问题解决方案
- 为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件
- 驱动中自动生成设备文件的方法
- Linux 设备驱动--- 自动创建设备文件
- Linux 设备驱动--- 自动创建设备文件
- 字符设备驱动第四课----自动生成设备
- android 字符设备驱动模块及在 /dev 下自动创建设备节点问题
- STL之map和multimap容器
- Python获取起点网图书信息
- 单例模式
- python查找json格式关键字
- CCF计算机软件能力认证模拟试题-出现次数最多的数(Java参考答案学习记录)
- (6)2.4之前的字符驱动-用devfs_register自动生成设备文件(可能在2.6linux目录树下编译不了)
- JVM——Java虚拟机架构
- 7个Ubuntu下的PDF编辑工具
- hdu 5033 ( Building ) 单调栈
- Android studio提高编码工作效率
- java开发环境的搭建
- 深入了解jvm
- 1023. 组个最小数 (20)
- C#--winForm项目核心模块--考试统计信息