kprobe

1、保证编译环境可用。
1)获取 Compile_Tool-3.0.93-1.0.x86_64.rpm 。
2)解压:rpm2cpio Compile_Tool_3.0.93-1.0.x86_64.rpm  | cpio -div
3) 安装环境rpm包:rpm -ivh kernel-source-3.0.93-0.8.2.x86_64.rpm
                  rpm -ivh kernel-xen-devel-3.0.93-0.8.2.x86_64.rpm

2、修改samples/kprobes/Makefile ,如:
obj-m := kprobe_example.o

KDIR := /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

all:
            make -C $(KDIR) M=$(PWD) modules

clean:
            rm *.o *.ko *.mod.c Modules.symvers modules.order -f

3、增加samples/kprobes/kprobe_example.c用例后,make产生一个ko文件。

在linux目录下
make modules M=samples/kprobes

4、insmod  ko文件。 看dmesg信息打印。

 

 

vim /proc/kallsyms 获.取内核函数符号表

 

struct timespec ts0_start, ts0_end;

/* kprobe pre_handler: called just before the probed instruction is executed */
static int ocfs2_write_begin_handler_pre(struct kprobe *probe, struct pt_regs *regs)
{

dump_stack();
 ktime_get_ts(&ts0_start);
 printk("ocfs2_write_begin ... \n");
 //printk("ocfs2_write_begin, start_ns: %llu\n", timespec_to_ns(&ts0_start));
 return 0;
}

/* kprobe post_handler: called after the probed instruction is executed */
static void ocfs2_write_begin_handler_post(struct kprobe *p, struct pt_regs *regs,
    unsigned long flags)
{
 ktime_get_ts(&ts0_end);
 printk("ocfs2_write_begin spend time: %llu ns, ts0_start_ns: %llu, ts0_end_ns: %llu \n",
  timespec_to_ns(&ts0_end) - timespec_to_ns(&ts0_start), timespec_to_ns(&ts0_start), timespec_to_ns(&ts0_end)); 
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值