首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从设备驱动程序将数据写入调试器

从设备驱动程序将数据写入调试器
EN

Stack Overflow用户
提问于 2012-12-29 08:07:24
回答 2查看 7K关注 0票数 1

使用proc,我们可以很容易地使用读和写系统调用,如本例所示。write on /proc entry through user space

但我正在使用调试器将信息从驱动程序传递到用户空间。我可以找到这两个示例代码。在这里,应用程序可以使用mmap()系统调用对调试器文件进行读写。

  • kernel.c
  • user.c

但是,在我的例子中,假设需要使用Debugfs文件与设备驱动程序进行通信:

代码语言:javascript
复制
user-space application    <-------> debugfs file <-------> Device driver
  1. 那么,我可以在我的-->>设备驱动程序代码-->>中使用相同的代码mmap_simple_kernel.c,并直接从驱动程序将数据传输到调试器吗?但是在这种情况下,我的驱动程序中将有两个file_operations结构,会不会引起一些问题?是正确的做法吗?
  2. 或者,就像应用程序跟踪进程中的-- mmap_user.c --相同的进程--我遵循我的设备驱动程序。并保留mmap_simple_kernel.c作为调试器条目的副模块?
EN

回答 2

Stack Overflow用户

发布于 2012-12-30 09:08:34

您可以看看kmem外泄是如何在mm/kmemles.c中使用调试器的:

代码语言:javascript
复制
static const struct seq_operations kmemleak_seq_ops = {
        .start = kmemleak_seq_start,
        .next  = kmemleak_seq_next,
        .stop  = kmemleak_seq_stop,
        .show  = kmemleak_seq_show,
};

static int kmemleak_open(struct inode *inode, struct file *file)
{
        return seq_open(file, &kmemleak_seq_ops);
}

static int kmemleak_release(struct inode *inode, struct file *file)
{
        return seq_release(inode, file);
}

static ssize_t kmemleak_write(struct file *file, const char __user *user_buf,
                              size_t size, loff_t *ppos)
{...}

static const struct file_operations kmemleak_fops = {
        .owner          = THIS_MODULE,
        .open           = kmemleak_open,
        .read           = seq_read,
        .write          = kmemleak_write,
        .llseek         = seq_lseek,
        .release        = kmemleak_release,
};


dentry = debugfs_create_file("kmemleak", S_IRUGO, NULL, NULL,
                             &kmemleak_fops);
票数 2
EN

Stack Overflow用户

发布于 2017-03-19 16:13:34

这个问题是Google中mmap调试器的最高搜索结果。我在这里补充一个重要的信息。根据这个https://lkml.org/lkml/2016/5/21/73,内核4.8.0或更高版本中的post debugfs_create_file()将忽略结构file_operations中的.mmap字段

使用debugfs_create_file_unsafe()作为解决方法

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14079893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档