如何找出自哪个 Linux 版本以来内核 API 函数/宏可用,或者是否发生了重大变化(被删除、参数类型或数量的更改)。
例如,在查看的最新版本时,scatterlist.h
我偶然发现了sg_alloc_table_from_pages_segment
,它具有我的内核模块(驱动程序)所需的功能。然而,令我失望的是,该功能在内核模块开发的 5.10 版本中尚未提供,我必须找到一种解决方法。但我仍然希望支持未来的内核版本,以防我们进行升级。
通常,这种情况是用预处理器隔离来处理的
#if LINUX_VERSION_CODE >= KERNEL_VERSION(...)
/*Version-specific implementation*/
#endif
但为了应用此模式,我需要找到添加该函数的内核版本。手动扫描头文件的所有中间版本将是一项艰巨的任务。