VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2078|回复: 3

linux内核高手请接招

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-7 21:00:01 | 显示全部楼层 |阅读模式
在写linux驱动程序的时候会调用register_chrdev()函数注册自己的驱动程序(2.4,字符驱动),该函数把我们的自己写的file_operation写到一个device struct结构体中。
当我们测试自己的驱动程序的时候会调用系统调用open()来打开该设备文件,在sys_open()函数会调用filep_open()该函数就调用open_namei()和dentry_open()产生一个struct file结构,并且该结构体中的file_operation字段为inode结构体中的file_operation字段。
问题:在内核中是怎么把我们驱动程序写的file_operation结构赋给inode结构的,才能使用户程序能够正确调用我们的驱动程序呢?
回复

使用道具 举报

0

主题

5

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-12-8 15:15:01 | 显示全部楼层
利用数据结构中回掉指针callback
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-12-8 15:30:01 | 显示全部楼层
自己已经搞定了,是在mknod的时候,sys_mknod在建立设备文件索引的时候先把默认的chrdev_fops赋给inode,在打开设备文件的时候回调用默认的操作chrdev_open()在该函数把自己写的操作与设备文件的inode关联。
回复

使用道具 举报

0

主题

1

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-15 15:45:08 | 显示全部楼层
在mknod的时候,sys_mknod在建立设备文件索引的时候先把默认的chrdev_fops赋给inode,在打开设备文件的时候回调用默认的操作chrdev_open()在该函数把自己写的操作与设备文件的inode关联
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表