error:too few arguments to function 'devlink_alloc'(以Ubuntu 22.04为例)

问题描述

error:too few arguments to function 'devlink_alloc'

解决方案

首先去Linux内核代码里查询造成冲突的接口。

对比内核中该接口和源码中该接口的异同,图1所示。

图1 编译

当定义了UBUNTU22_04时,选择对devlink_alloc进行正确定义。

#if defined(XXXXX9_VERSION) || defined(UBUNTU22_04) \
	|| (defined(HAVE_KS_SUPPORT) && (KERNEL_VERSION(5, 14, 0) <= LINUX_VERSION_CODE))
	devlink = devlink_alloc(&hinic3_devlink_ops, sizeof(struct hinic3_devlink), &pdev->dev);
#else
	devlink = devlink_alloc(&hinic3_devlink_ops, sizeof(struct hinic3_devlink));
#endif