Linux V3.10 内核的变化…
2017-02-18 14:58
411 查看
把一个在3.8内核运行的内核模块源码放到3.10内核编译失败,编译显示在kernel 3.8 下调用的
create_proc_entry() 函数未定义。总结一下这个内核模块源码在3.10与3.8编译通过的区别。1. create_proc_entry() 函数
3.8 内核有这个API,3.10 内核没有3.10 可以使用:proc_create() 函数
这个函数在 3.8与 3.10 内核都有。
比较可以看出 proc_create() 比create_proc_entry() 多了一个file_operations参数
调用create_proc_entry()代码:
使用proc_create() 代码:
2. struct proc_dir_entry 变化3.10内核去掉了:write_proc_t *write_proc
函数指针。那么如何实现相同功能的写函数呢?答案是通过proc_create()最后一个参数。
ipf_cmd_write 是自定义的写函数,其内容可以自己实现。
create_proc_entry() 函数未定义。总结一下这个内核模块源码在3.10与3.8编译通过的区别。1. create_proc_entry() 函数
1 | static inline struct proc_dir_entry *create_proc_entry( const char *name, |
2 | umode_t mode, struct proc_dir_entry *parent) |
1 | static inline struct proc_dir_entry *proc_create( const char *name, umode_t mode, |
2 | struct proc_dir_entry *parent, |
3 | const struct file_operations *proc_fops) |
比较可以看出 proc_create() 比create_proc_entry() 多了一个file_operations参数
调用create_proc_entry()代码:
1 | ipf_stats = create_proc_entry( "stats" , 0, proc_ipf); |
2 | if (ipf_stats) |
3 | { |
4 | ipf_stats->proc_fops = &stats_file_ops; |
5 | } |
1 | ipf_stats = proc_create( "stats" , 0, proc_ipf, &stats_file_ops); |
函数指针。那么如何实现相同功能的写函数呢?答案是通过proc_create()最后一个参数。
1 | static struct file_operations cmd_file_ops = { |
2 | .write = ipf_cmd_write, |
3 | }; |
1 | ipf_cmd = proc_create( "cmd" , S_IFREG | S_IRUGO | S_IWUSR, proc_ipf, &cmd_file_ops); |
相关文章推荐
- redhat linux9内核升级(2.4…
- Linux 系统内核的调试
- [转]inotify -- Linux 2.6 内核中…
- Linux 内核设计与实现(一)
- Linux 系统内核空间与用户空间通信…
- Linux 2.6.32内核字符设备驱…
- 我的linux学习10 例行命令
- linux 内核大事记
- linux 内核与用户空间通信之n…
- 透过 Linux 内核看无锁编程
- Linux 2.6.19.x 内核编译配置选项…
- 深入分析 Linux 内核链表 (转载)
- 成功移植linux2.6.38内核到TQ2440 …
- Linux 内核的排队自旋锁(FIFO Tick…
- Linux 内核剖析
- Linux 2.6.19.x 内核编译配置选项…
- linux-2.6.26.5内核的 lcd驱动移植…
- linux-2.6.26.5内核的 lcd驱动移植…
- Top 10 Linux console application…
- Linux 内核中断内幕(转)