一. 问题引入
linux5.10生成在/proc目录下的文件时,利用cat读取文件,提示:
operation not permitted
该报错是错误码:EPERM,不允许操作
二. 问题原因
发现是在移植内核代码时,未对proc接口进行适配。
linux-5.6引入结构体struct proc_ops,用以替代struct file_operations在/proc下进行文件操作。
proc_create中的proc_ops结构体类型定义改变,导致不匹配
//struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct file_operations *proc_fops);
struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent, const struct proc_ops *proc_ops);
struct proc_ops定义:
//proc_fs.h
struct proc_ops {
int (*proc_open)(struct inode *, struct file *