打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
新旧版本驱动模块的一些不同

1.ioctl 与 unlocked_ioctl   / int 与long

旧版本:

static const struct file_operations globalmem_fops=
{
.owner=THIS_MODULE,
.llseek=globalmem_llseek,
.open=globalmem_open,
.read=globalmem_read,
.write=globalmem_write,
.ioctl=globalmem_ioctl,
.release=globalmem_release,
};

int globalmem_ioctl(struct inode* inode,struct file* filp, unsigned int cmd,unsigned long arg)

{

switch (cmd)

  {

   case:XXX:   ...

    ……

  }

}

新版本:

static const struct file_operations globalmem_fops=
{
.owner=THIS_MODULE,
.llseek=globalmem_llseek,
.open=globalmem_open,
.read=globalmem_read,
.write=globalmem_write,
.unlocked_ioctl=globalmem_ioctl,
.release=globalmem_release,
};

long globalmem_ioctl(struct file* filp, unsigned int cmd,unsigned long arg)//没有inode参数!

{

switch (cmd)

  {

   case:XXX:   ...

    ……

  }

}


2.class_create/device_create 与 devfs_mk_cdev

旧版本:devfs_mk_cdev(MKDEV(LED_MAJOR, 0), S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP,DEVICE_NAME);  

新版本:

/*******     功能:内核驱动注册完后,用以下代码创建设备文件  ******/

mydriver_class = class_create(THIS_MODULE, DEVICE_NAME); //注册一个类,使mdev可以在"/dev/"目录下 面建立设备节点

//创建一个设备节点,节点名为DEVICE_NAME

device_create(mydriver_class, NULL, devno, NULL, DEVICE_NAME);  

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
第二章 v4l2 framework简介
字符设备中 重要的数据结构
devfs_mk_cdev 与devfs_register引用 ARM嵌入式LINUX设备驱动设计入 - 嵌入式驱动开发 - wuyunzdh
FrameBuffer在Linux中的实现和机制
LED驱动(原创)
驱动程序设计
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服