1
arif@khost:~/src/linux$ global -x ip_rcv_finish
ip_rcv_finish     319 net/ipv4/ip_input.c static int ip_rcv_finish(struct sk_buff *skb)

现在如果我想使用这个函数,我需要初始化一个指向这个函数的指针。

为了能够做到这一点,我需要函数的地址。

我已经看到,从用户空间我可以读取/proc/kallsyms以获取符号的地址。他们是否存在任何类似的机制,我可以读取符号表以从内核空间中提取符号的地址?

4

1 回答 1

3

根据您的内核版本,您可以使用kallsyms_lookup_name和/或kallsyms_on_each_symbol从内核空间中运行的代码中获取符号的地址。

这仅CONFIG_KALLSYMS在内核配置中设置时才有效。

请注意,我不建议查找要调用的函数的地址,除非没有更好的方法(内核 API)来做你想做的事。尽管如此,如果没有其他帮助,kallsyms_*() API 可能是要走的路。

于 2012-12-03T07:11:05.560 回答