一、EXPORT_SYMBOL核心子產品函數導出機制
1. 案例:筆者要實作一個功能,驅動子產品(adc.ko)與驅動子產品(gpio.ko)之間通信。
2. 修改adc.ko驅動,在函數内部增加讀取adc狀态的接口函數
static unsigned char g_hardware_version = 0x7e;
unsigned char get_hardware_version_by_adc(void)
{
return g_hardware_version;
}
EXPORT_SYMBOL(get_hardware_version_by_adc);
3. 修改gpio.ko驅動,增加擷取adc狀态的接口函數
extern unsigned char get_hardware_version_by_adc(void);
static void nuc972_gpio_request(void)
{
......
printk("nuc972_gpio_request(): get_hardware_version_by_adc=0x%02x\n", get_hardware_version_by_adc());
......
}
4. 依次insmod加載adc.ko、gpio.ko驅動,運作調試資訊如下
nuc972_gpio_request(): get_hardware_version_by_adc=0x7e
[root@szclou ~]#cat /proc/kallsyms | grep "get_hardware_version_by_adc"
bf01c028 T get_hardware_version_by_adc [nuc972_adc]