chip: release lines in bulk on close()
authorBartosz Golaszewski <bartekgola@gmail.com>
Thu, 29 Jun 2017 15:10:57 +0000 (17:10 +0200)
committerBartosz Golaszewski <bartekgola@gmail.com>
Thu, 6 Jul 2017 09:11:36 +0000 (11:11 +0200)
When closing the chip use a bulk operation to release all lines.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
src/lib/chip.c

index 74d8b7b10acfc4de8106f0f78e897c4c7be35d31..58d02c2aeebd5cca36754a500e88740edba0b135 100644 (file)
@@ -149,10 +149,13 @@ struct gpiod_chip * gpiod_chip_open_lookup(const char *descr)
 
 void gpiod_chip_close(struct gpiod_chip *chip)
 {
+       struct gpiod_line_bulk bulk;
        unsigned int i;
 
+       gpiod_line_bulk_init(&bulk);
        for (i = 0; i < chip->cinfo.lines; i++)
-               gpiod_line_release(line_array_member(chip->lines, i));
+               gpiod_line_bulk_add(&bulk, line_array_member(chip->lines, i));
+       gpiod_line_release_bulk(&bulk);
 
        close(chip->fd);
        line_array_free(chip->lines);