MODULE_DEVICE_TABLE

发布时间 2023-04-12 22:54:03作者: 流水灯

__attribute__((alias(__stringify(A))))   设置函数、变量的别名

#include <stdio.h>
#define __stringify_1(x...) #x
#define __stringify(x...)   __stringify_1(x)

void a(int n) __attribute__((alias(__stringify(A))));
//void sys_socket(int n) __attribute__((alias("SyS_socket")));

void A(int num)
{
    printf("%d\n", num);
}

int main(void)
{
    a(1);
}

 

驱动程序里经常看到MODULE_DEVICE_TABLE这个宏定义,一般用于动态加载驱动也就是热插拔的时候使用

#define MODULE_DEVICE_TABLE(type, name)                    \
extern typeof(name) __mod_##type##__##name##_device_table        \
  __attribute__ ((unused, alias(__stringify(name))))

 

在编译时,从所有驱动程序中提取此信息,并创建一个设备表。

插入设备时,内核会引用设备表,并且如果找到与添加设备的设备/供应商ID匹配的条目,则将加载驱动