0

我正在查看一个包含一大堆枚举的包含文件,即include/linux/power_supply.h.

枚举如下所示:

enum {
    POWER_SUPPLY_STATUS_UNKNOWN = 0,
    POWER_SUPPLY_STATUS_CHARGING,
    POWER_SUPPLY_STATUS_DISCHARGING,
    POWER_SUPPLY_STATUS_NOT_CHARGING,
    POWER_SUPPLY_STATUS_FULL,
};

我正在从不同的内核版本移植驱动程序,除非我POWER_SUPPLY_xxxxpower_supply.h.

这是错误的做法吗?这些枚举到底是什么,它们在内核中的功能是什么?

-一个

4

1 回答 1

1

中的定义include/linux/power_supply.h为 中使用的符号提供了一组通用值drivers/power,主要是 中描述的 Charger-Manager Documentation/power/charger-manager.txt

值的语义记录在Documentation/power/power_supply_class.txt. 除了为内核中的驱动程序提供一组通用值之外,power_supply.h它还是内核和控制驱动程序的用户空间实用程序之间的桥梁。

如果您在内核中更改这些枚举值中的任何一个,那么您可能会遇到两个问题:

  1. 使用这些枚举的所有其他驱动程序都可以正确编译,但在运行时会发生灾难性故障
  2. 使用冲突值编译的任何用户空间实用程序都可能失败

因此,要移植驱动程序,您需要更改驱动程序代码以符合power_supply.h目标内核使用的代码,而不是更改power_supply.h以适应您的驱动程序。这意味着您必须学习目标和源内核版本中的驱动程序代码和枚举值的语义。

于 2013-11-01T06:44:54.827 回答