1

我正在使用该函数来创建设备device_create() 但它在 Ubuntu 8.04 内核版本 2.6.24 中创建了一个警告:

警告:格式参数过多

这是我使用此功能的方式:

device_create(my_class, NULL, MKDEV(major, 0), NULL, "my_dev");

相同的代码在Ubuntu 10.04 -内核版本 2.6.32上运行良好,但在Ubuntu 8.04 -内核版本 2.6.24中创建警告!

任何人都可以请我更正以删除该警告吗?

先感谢您。信德胡

4

1 回答 1

1

用于此的旧 API 没有 drvdata 的第四个参数,您将其提供为 NULL。所以摆脱NULL,你应该没问题。

也就是说,其他 API 也发生了变化,所以期待其他问题。考虑定义一些跨内核版本做正确事情的预处理器宏。例如:

#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
    #define my_device_create(a, b, c, d) device_create(a, b, c, NULL, d)
#else
    #define my_device_create(a, b, c, d) device_create(a, b, c, d)
#endif
于 2012-05-25T14:48:43.350 回答