2013-05-24 4 views
0

XenServer 6.0.0 및 DDK가 설치되었으며 커널 모듈을 개발하고자하므로 기본 kprobes 프로그램을 작성합니다. 그것은 레드햇과 같은 일반 리눅스에서 OK를 실행하고 "Before sys_ioctl"을 출력하지만 XenServer에서는 "Hypercall FI kernel module : init"만 출력하고 "Before sys_ioctl"을 출력 할 수 없습니다.DDK가있는 XenServer는 Kprobes를 지원하지 않습니까?

그래서 이유가 무엇입니까? 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"); 
+0

Xen 서버에서 kprobe를 지원하지 않을 가능성이 있습니다./sys/kernel/debug/kprobes/enable에서 확인할 수 있습니다. –

+0

@rakib 고맙습니다.하지만 RHEL 6.x와 같은 XenServer 나 일반 Linux와 상관없이'/ sys/kernel/debug'에'kprobes'라는 파일이 없습니다. –

답변

0

마지막으로이 문제를 해결했습니다. XenServer 6.1 및 6.1.0 ddk를 사용했는데 문제가 없습니다.

커널 버전은 다음과 같습니다 2.6.32.43-0.4.1.xs1.6.10.741.170752xen

나는 그것이의 XenServer 6.0에서 Kprobes를 사용할 수 없습니다 버그이었다 생각한다.

관련 문제