Вопрос

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)

Now if i want to use this function i need to initialize a pointer to this function.

To be able to do that i need the address of the function.

I've seen that from user space i can read /proc/kallsyms to get an address of a symbol. Is their any similar mechanism exist where i can read the symbol table to extract a symbol's address from kernel space?

Это было полезно?

Решение

Depending on your kernel version, you can use kallsyms_lookup_name and/or kallsyms_on_each_symbol to obtain the addresses of the symbols from code running in the kernel space.

This only works if CONFIG_KALLSYMS is set in the kernel configuration.

Note that I would not recommend looking up the addresses of the functions to be called though unless there is no better way (kernel API) to do what you would like to. Still, if nothing else helps, kallsyms_*() API may be the way to go.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top