在libgpiod中使用ctxless函数是否更糟或更好

问题描述 投票:2回答:1

有没有人熟悉libgpiod可以回答这个问题:

是否有使用ctxless函数的缺点而不是调用单个函数来操作芯片线(或一般)?例如,要打开一行,我可能会写一些类似于:

struct gpiod_chip* chip = gpiod_chip_open_by_name("gpiochip2");
struct gpiod_line* line = gpiod_chip_get_line(chip, 10);
gpiod_line_request_output(line, "foo", 0);
gpiod_chip_close(chip);

或者我可以简单地使用一个电话:

gpiod_ctxless_set_value("gpiochip2", 10, 1, false, "foo", NULL, NULL);

你什么时候用一个而不是另一个?

embedded-linux gpio iio
1个回答
1
投票

ctxless函数非常适合快速设置或获取GPIO的值。但是,我会在程序的生命周期中保留一次。

原因是使用ctxless函数,libgpiod必须总是重做相同的设置(打开gpiochip,请求行,设置其方向),然后获取或设置值。

如果您在程序中多次读取或设置该值,则可能不应使用ctxless函数。

此外,保持程序生命周期所需的行确定是一件好事,这将阻止任何其他程序使用该GPIO。

© www.soinside.com 2019 - 2024. All rights reserved.