1、在linux-3.0/kernel/sysctl.c文件中加入:(可参考block_dump)
{
.procname = "weixian_dump",
.data = &weixian_dump,
.maxlen = sizeof(weixian_dump),
.mode = 0644,
.proc_handler = proc_dointvec,
.extra1 = &zero,
},
./kernel/sysctl_binary.c加入:(挂靠到block_dump模块下)
static const struct bin_table bin_vm_table[] = 加入
{ CTL_INT, VM_BLOCK_DUMP, "weixian_dump" },
2、
在vim ./net/ipv4/tcp_output.c开头加入:
int weixian_dump;
EXPORT_SYMBOL(weixian_dump);//允许内核其他模块调用。
在./include/linux/tcp.h中加入以下声明,用于网络函数引用:(可参考block_dump的使用,内核中任何模块使用,只需要extern声明即可)
extern int weixian_dump;
3、在net相关函数内部加入打印信息:(可参考block_dump的使用)
if (unlikely(weixian_dump))
printk("[Weixian] ndo_start_xmit %d\n", skb->len);
4、打开kernel打印开关:echo 1 > /proc/sys/vm/weixian_dump
关闭kernel打印开关:echo 0 > /proc/sys/vm/weixian_dump