Proc节点的问题

花开花落_fzu 2018-03-11 11:29:19
写了一个Proc的相关的代码,在/proc目录下创建了一个mxj的目录,再在mxj的目录下创建一个文件。但是在/proc/mxj下执行ls的时候,总是卡死,看到dmesg信息是卡在一个proc文件系统的自旋锁结构中。如下是我的代码,请指教


#include <linux/module.h>
#include <linux/init.h>
#include <linux/device.h>
#include <linux/proc_fs.h>
#include <linux/uaccess.h>
#include <linux/types.h>
#include <linux/fs.h>


struct proc_dir_entry *g_pRootProc = NULL;

unsigned char *proc_data = "I am mxj";

ssize_t cpuset_proc_read (struct file *filep, char __user *buffer, size_t size, loff_t *offet)
{
printk("%s %d\r\n", __FUNCTION__, __LINE__);
return 0;
}

ssize_t cpuset_proc_write(struct file *filep, const char __user *buffer, size_t size, loff_t *offet)
{
printk("%s %d\r\n", __FUNCTION__, __LINE__);
return 0;
}

static int __init cpuset_module_init(void)
{
struct file_operations stOper = {
.owner = THIS_MODULE,
.read = cpuset_proc_read,
.write = cpuset_proc_write,
};

g_pRootProc = proc_mkdir("mxj", NULL);
proc_create("cpuset", 0777, g_pRootProc, &stOper);

return 0;
}

static void __exit cpuset_module_exit(void)
{
remove_proc_entry("cpuset", g_pRootProc);
remove_proc_entry("mxj", NULL);
}

module_init(cpuset_module_init);
module_exit(cpuset_module_exit);


MODULE_LICENSE("GPL");
...全文
476 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
花开花落_fzu 2018-03-12
  • 打赏
  • 举报
回复
是我代码写的有问题 1、file_operations结构体其他成员没有置NULL 2、将局部结构体变量注册给了内核,导致踩内存等问题

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧