Linux设备驱动程序(LDD)第二章:内核符号表

时间:2022-10-07 17:59:06

简介

在内核中维护者一张符号表,记录了内核中所有的符号(函数、全局变量等)的地址以及名字,这个符号表被嵌入到内核镜像中,使得内核可以在运行过程中随时获得一个符号地址对应的符号名。而内核代码中可以通过 printk("%pS\n", addr) 打印符号名。

本文介绍内核符号表的生成和查找过程。


查找

cat /proc/kallsyms | more
Linux设备驱动程序(LDD)第二章:内核符号表

示例代码

//CoreCodeTable.c 

#include <linux/init.h>

#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

int add_int(int a, int b)

{

return (a + b);

}

int sub_int(int a, int b)

{

return (a - b);

}

EXPORT_SYMBOL(add_int);

EXPORT_SYMBOL(sub_int);