Linux kernel 可以在ARM目标上编程

Linux kernel 可以在ARM目标上编程,linux-kernel,kernel,Linux Kernel,Kernel,我想在目标ARMV7板上放置一个upube,我有upube_example.ko,它是根据内核2.6.39构建的 insmod uprobe_example.ko vaddr=$vaddr pid=$! Uprobes在用户的生命周期中处理有趣的事件 +进程,例如fork、clone、exec和exit #insmod upube_example.ko pid=1461 vaddr=0x000084ac [15245.267358]向上:未知参数pid'` 我想用上述参数插入此模块,这是不允许

我想在目标ARMV7板上放置一个upube,我有upube_example.ko,它是根据内核2.6.39构建的

insmod uprobe_example.ko vaddr=$vaddr pid=$!
Uprobes在用户的生命周期中处理有趣的事件 +进程,例如fork、clone、exec和exit

#insmod upube_example.ko pid=1461 vaddr=0x000084ac

[15245.267358]向上:未知参数
pid'`

我想用上述参数插入此模块,这是不允许的

/*
* Usage: insmod uprobe_example.ko pid=<pid> vaddr=<address> [verbose=0]
* where <pid> identifies the probed process and <address> is the virtual
* address of the probed instruction.
*/

static int pid = 0;
module_param(pid, int, 0);
MODULE_PARM_DESC(pid, “pid”);

static int verbose = 1;
module_param(verbose, int, 0);
MODULE_PARM_DESC(verbose, “verbose”);

static long vaddr = 0;
module_param(vaddr, long, 0);
MODULE_PARM_DESC(vaddr, “vaddr”);

static int nhits;
static struct uprobe usp;

static void uprobe_handler(struct uprobe *u, struct pt_regs *regs)
{
nhits++;
if (verbose)
printk(KERN_INFO “Hit #%d on probepoint at %#lx\n”,
nhits, u->vaddr);
}

int __init init_module(void)
{
int ret;
usp.pid = pid;
usp.vaddr = vaddr;
usp.handler = uprobe_handler;
printk(KERN_INFO “Registering uprobe on pid %d, vaddr %#lx\n”,
usp.pid, usp.vaddr);
ret = register_uprobe(&usp);
if (ret != 0) {
printk(KERN_ERR “register_uprobe() failed, returned %d\n”, ret);
return -1;
}
return 0;
}

void __exit cleanup_module(void)
{
printk(KERN_INFO “Unregistering uprobe on pid %d, vaddr %#lx\n”,
usp.pid, usp.vaddr);
printk(KERN_INFO “Probepoint was hit %d times\n”, nhits);
unregister_uprobe(&usp);
}

此生成文件工作正常,没有任何错误

1。系统日志中有什么特别的内容吗?如果模块中确实存在未知符号,日志可能会提供其他信息。2.此外,如果您可以显示“uprobe_示例”模块的源代码,则更容易查看正在发生的情况。请检查我的更新/sys/module/uprobe_示例/参数中的内容?这三个参数都列出了吗?
obj-m   := uprobe_example.o

KERNELDIR   ?= $(DLI_KERNEL)
PWD := $(shell pwd)

default:
    $(MAKE) -C $(KERNELDIR) M=$(PWD) EXTRA_CFLAGS=-I`pwd` modules
    #sync.sh up.ko

clean:
    rm -f *.o *.ko *.mod.c *.symvers
    rm -f trace/*.o arch/*.o
obj-m += uprobe_example.o

KERNELDIR ?= $(DLI_KERNEL)

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

clean: 
    make -C $(KERNELDIR)  M=$(PWD) clean