【问题标题】:XenServer with DDK doesn't support Kprobes?带有 DDK 的 XenServer 不支持 Kprobes?
【发布时间】:2013-05-24 01:44:37
【问题描述】:

我安装了 XenServer 6.0.0 和 DDK,我想开发一个内核模块,所以我编写了一个基本的 kprobes 程序。它在redhat等普通linux上运行正常并输出“在sys_ioctl之前”,但在XenServer上它只输出“Hypercall FI内核模块:init”,不能输出“在sys_ioctl之前”。

那么,是什么原因呢? XenServer 不支持 Kprobes 或我的程序有错误?

这是我的简单代码。 kp.addrcat /proc/kallsyms | grep sys_ioctl不同,我试过do_fork,问题也存在。

#include <linux/kprobes.h>
#include <linux/kallsyms.h>
#include <linux/module.h>

static struct kprobe kp;

int handler_pre_target(struct kprobe *p, struct pt_regs *regs)
{
    printk("Before sys_ioctl\n");
    return 0;
}

static int __init myinit(void)
{
    kp.addr = (kprobe_opcode_t *) 0xc048498d;
    kp.pre_handler = handler_pre_target;
    register_kprobe(&kp);
    printk("Hypercall FI kernel module: init\n");
    return 0;
}

static void __exit myexit(void)
{
    unregister_kprobe(&kp);
    printk("Hypercall FI kernel module: exit\n");
}

module_init(myinit);
module_exit(myexit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("fg");
MODULE_DESCRIPTION("Hypercall test");

【问题讨论】:

  • 您的 Xen 服务器上可能没有 kprobe 支持。您可以从 /sys/kernel/debug/kprobes/enable 检查它。
  • @rakib 谢谢,但是在/sys/kernel/debug 中没有名为kprobes 的文件,无论是XenServer 还是RHEL 6.x 之类的普通linux。

标签: linux-kernel kernel-module xen kprobe


【解决方案1】:

最后,我解决了这个问题。 我用的是 XenServer 6.1 和 6.1.0 ddk,没关系。

内核版本为:2.6.32.43-0.4.1.xs1.6.10.741.170752xen

我怀疑这是 XenServer 6.0 中无法使用 kprobes 的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 2016-09-24
    • 2020-03-18
    • 1970-01-01
    • 2016-07-30
    • 2014-11-13
    • 2023-04-10
    相关资源
    最近更新 更多