在libgpiod中使用ctxless函数会更糟还是更好

时间:2019-03-14 15:21:47

标签: embedded-linux gpio iio

有没有一个熟悉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);

您何时会使用另一个?

1 个答案:

答案 0 :(得分:1)

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

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

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

此外,绝对要在程序寿命期内保留请求的行,因为这样做会阻止其他任何程序使用该GPIO。