场景:
一个dmx ko, 需要兼容很多tuner类型,但只会用到其中一种;那么在code会attach很多种tuner, 调用到各种tuner自己定义的接口, 具体是哪种类型的tuner会在dts种指定类型;dmx ko不需要改动。
存在的问题:如果insmod dmx ko,那么因为没有用到的tuner的函数符合肯定找不到,所以insmod dmx ko会失败。
解决办法:
1. attach 命令不应该直接调用tuner接口,而是采用动态加载的做法,方法如下:
#ifdef CONFIG_MEDIA_ATTACH
#define dvb_attach(FUNCTION, ARGS...) ({ \
void *__r = NULL; \
typeof(&FUNCTION) __a = symbol_request(FUNCTION); \
printk(KERN_ERR "DVB: pengcc find symbol "#FUNCTION"()\n"); \
if (__a) { \
__r = (void *) __a(ARGS); \
if (__r == NULL) \