찾기 유형 power_supply

찾기 유형 power_supply

내 커널 드라이버는 배터리 속성(get_property, set_property)에 액세스해야 합니다.
질문: 배터리의 전원 공급 구조를 찾는 방법은 무엇입니까?

power_supply_get_by_name방금 배터리 이름이 다를 수 있다는 것을 알았습니다 . power_supply 유형을 확인해야 하는데 여기서 막히게 됩니다.

유형을 직접 확인 get_by_type하거나 직접 확인하거나 power_supply_get_by_name에 전달하면 문제가 없습니다.get_all_power_suppliesget_power_supply_names

커널에서 파일에 액세스하지 않으려면 type="battery" power_supply를 찾는 더 좋은 방법은 무엇입니까?

공급품이 변경되거나 사라지거나 다시 나타날 수 있으므로 매번 공급품을 다시 받아야 한다고 생각합니까? 어떤 경우에는 운전자가 몇 초마다 전원에 접근할 수 있으므로 배터리를 찾는 데 오랜 시간을 소비하지 않는 것이 가장 좋습니다.

답변1

파티가 1년이나 늦었습니다. :) 이것이 Cycle Power 클래스의 모든 객체 뒤에 있는 기본 아이디어입니다.

#include <linux/power_supply.h>

static int power_supply_printer(struct device *dev, const void *data)
{
    struct power_supply *psy = dev_get_drvdata(dev);

    (void)data;
    printk(KERN_INF "power-supply = %s\n", psy->desc->name);

    /* Return 1 if found, 0 if this is not valid. */
    return 0;
}

static __init int my_driver_init(void)
{
    struct device *dev;

    dev = class_find_device(power_supply_class, NULL, NULL /* data*/, power_supply_printer);
    ...
}

이 기능은 모든 power_suppy_class드라이버를 통해 반복됩니다. 콜백 함수가 0을 반환할 때마다 클래스에서 사용 가능한 다음 장치를 확인합니다.

관련 정보