linux-gpio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V5 0/8] libgpiod: Add Rust bindings
@ 2022-08-02 12:18 Viresh Kumar
  2022-08-02 12:18 ` [PATCH V5 1/8] libgpiod: Add libgpiod-sys rust crate Viresh Kumar
                   ` (8 more replies)
  0 siblings, 9 replies; 11+ messages in thread
From: Viresh Kumar @ 2022-08-02 12:18 UTC (permalink / raw)
  To: Linus Walleij, Bartosz Golaszewski, Kent Gibson
  Cc: Viresh Kumar, Vincent Guittot, linux-gpio, Miguel Ojeda,
	Wedson Almeida Filho, Alex Bennée, stratos-dev, Gerard Ryan

Hello,

Here is another version of rust bindings for libgpiod v2.0, based of the
next/libgpiod-2.0.

Pushed here:

https://github.com/vireshk/libgpiod master

Kent, I hope I haven't missed any of your comments, there were too many of them.
Thanks for your review.

V4->V5:
- Arrange as workspace with crates for libgpiod-sys, libgpiod, gpiosim.
- Use static libgpiod and libgpiosim libraries instead of rebuilding again.
- Arrange in modules instead of flattened approach.
- New enums like Setting and SettingKind and new types based on them SettingMap
  and SettingKindMap.
- New property independent helpers for line_config, like set_prop_default().
- Improved tests/examples, new example for gpiowatch.
- Add pre-built bindings for gpiosim too.
- Many other changes.

V3->V4:
- Rebased on top of new changes, and made changes accordingly.
- Added rust integration tests with gpiosim.
- Found a kernel bug with tests, sent a patch for that to LKML.

V2->V3:
- Remove naming redundancy, users just need to do this now
  use libgpiod:{Chip, Direction, LineConfig} now (Bartosz);
- Fix lifetime issues between event-buffer and edge-event modules, the event
  buffer is released after the last edge-event reference is dropped (Bartosz).
- Allow edge-event to be copied, and freed later (Bartosz).
- Add two separate rust crates, sys and wrapper (Gerard).
- Null-terminate the strings passed to libgpiod (Wedson).
- Drop unnecessary checks to validate string returned from chip:name/label/path.
- Fix SAFETY comments (Wedson).
- Drop unnecessary clone() instances (Bartosz).

V1->V2:
- Added examples (I tested everything except gpiomon.rs, didn't have right
  hardware/mock device to test).
- Build rust bindings as part of Make, update documentation.

Thanks.

--
Viresh

Viresh Kumar (8):
  libgpiod: Add libgpiod-sys rust crate
  libgpiod-sys: Add pre generated rust bindings
  libgpiod: Add rust wrapper crate
  libgpiod: Add rust examples
  libgpiod: Add gpiosim rust crate
  gpiosim: Add pre generated rust bindings
  libgpiod: Add rust tests
  libgpiod: Integrate building of rust bindings with make

 .gitignore                                    |    5 +
 README                                        |    8 +-
 TODO                                          |    8 -
 bindings/Makefile.am                          |    6 +
 bindings/rust/Cargo.toml                      |    7 +
 bindings/rust/Makefile.am                     |   18 +
 bindings/rust/gpiosim/Cargo.toml              |   18 +
 bindings/rust/gpiosim/README.md               |   11 +
 bindings/rust/gpiosim/build.rs                |   43 +
 bindings/rust/gpiosim/src/bindings.rs         |  180 ++
 bindings/rust/gpiosim/src/lib.rs              |   25 +
 bindings/rust/gpiosim/src/sim.rs              |  323 ++++
 bindings/rust/libgpiod-sys/Cargo.toml         |   15 +
 bindings/rust/libgpiod-sys/README.md          |   11 +
 bindings/rust/libgpiod-sys/build.rs           |   41 +
 bindings/rust/libgpiod-sys/src/bindings.rs    | 1535 +++++++++++++++++
 bindings/rust/libgpiod-sys/src/lib.rs         |   13 +
 bindings/rust/libgpiod/Cargo.toml             |   16 +
 bindings/rust/libgpiod/examples/gpiodetect.rs |   30 +
 bindings/rust/libgpiod/examples/gpiofind.rs   |   35 +
 bindings/rust/libgpiod/examples/gpioget.rs    |   44 +
 bindings/rust/libgpiod/examples/gpioinfo.rs   |   95 +
 bindings/rust/libgpiod/examples/gpiomon.rs    |   71 +
 bindings/rust/libgpiod/examples/gpioset.rs    |   64 +
 bindings/rust/libgpiod/examples/gpiowatch.rs  |   54 +
 bindings/rust/libgpiod/src/chip.rs            |  253 +++
 bindings/rust/libgpiod/src/edge_event.rs      |  102 ++
 bindings/rust/libgpiod/src/event_buffer.rs    |   90 +
 bindings/rust/libgpiod/src/info_event.rs      |   68 +
 bindings/rust/libgpiod/src/lib.rs             |  477 +++++
 bindings/rust/libgpiod/src/line_config.rs     |  586 +++++++
 bindings/rust/libgpiod/src/line_info.rs       |  180 ++
 bindings/rust/libgpiod/src/line_request.rs    |  246 +++
 bindings/rust/libgpiod/src/request_config.rs  |  119 ++
 bindings/rust/libgpiod/tests/chip.rs          |   97 ++
 bindings/rust/libgpiod/tests/common/config.rs |  142 ++
 bindings/rust/libgpiod/tests/common/mod.rs    |   10 +
 bindings/rust/libgpiod/tests/edge_event.rs    |  294 ++++
 bindings/rust/libgpiod/tests/info_event.rs    |  120 ++
 bindings/rust/libgpiod/tests/line_config.rs   |  293 ++++
 bindings/rust/libgpiod/tests/line_info.rs     |  272 +++
 bindings/rust/libgpiod/tests/line_request.rs  |  473 +++++
 .../rust/libgpiod/tests/request_config.rs     |   42 +
 configure.ac                                  |   16 +
 44 files changed, 6545 insertions(+), 11 deletions(-)
 create mode 100644 bindings/rust/Cargo.toml
 create mode 100644 bindings/rust/Makefile.am
 create mode 100644 bindings/rust/gpiosim/Cargo.toml
 create mode 100644 bindings/rust/gpiosim/README.md
 create mode 100644 bindings/rust/gpiosim/build.rs
 create mode 100644 bindings/rust/gpiosim/src/bindings.rs
 create mode 100644 bindings/rust/gpiosim/src/lib.rs
 create mode 100644 bindings/rust/gpiosim/src/sim.rs
 create mode 100644 bindings/rust/libgpiod-sys/Cargo.toml
 create mode 100644 bindings/rust/libgpiod-sys/README.md
 create mode 100644 bindings/rust/libgpiod-sys/build.rs
 create mode 100644 bindings/rust/libgpiod-sys/src/bindings.rs
 create mode 100644 bindings/rust/libgpiod-sys/src/lib.rs
 create mode 100644 bindings/rust/libgpiod/Cargo.toml
 create mode 100644 bindings/rust/libgpiod/examples/gpiodetect.rs
 create mode 100644 bindings/rust/libgpiod/examples/gpiofind.rs
 create mode 100644 bindings/rust/libgpiod/examples/gpioget.rs
 create mode 100644 bindings/rust/libgpiod/examples/gpioinfo.rs
 create mode 100644 bindings/rust/libgpiod/examples/gpiomon.rs
 create mode 100644 bindings/rust/libgpiod/examples/gpioset.rs
 create mode 100644 bindings/rust/libgpiod/examples/gpiowatch.rs
 create mode 100644 bindings/rust/libgpiod/src/chip.rs
 create mode 100644 bindings/rust/libgpiod/src/edge_event.rs
 create mode 100644 bindings/rust/libgpiod/src/event_buffer.rs
 create mode 100644 bindings/rust/libgpiod/src/info_event.rs
 create mode 100644 bindings/rust/libgpiod/src/lib.rs
 create mode 100644 bindings/rust/libgpiod/src/line_config.rs
 create mode 100644 bindings/rust/libgpiod/src/line_info.rs
 create mode 100644 bindings/rust/libgpiod/src/line_request.rs
 create mode 100644 bindings/rust/libgpiod/src/request_config.rs
 create mode 100644 bindings/rust/libgpiod/tests/chip.rs
 create mode 100644 bindings/rust/libgpiod/tests/common/config.rs
 create mode 100644 bindings/rust/libgpiod/tests/common/mod.rs
 create mode 100644 bindings/rust/libgpiod/tests/edge_event.rs
 create mode 100644 bindings/rust/libgpiod/tests/info_event.rs
 create mode 100644 bindings/rust/libgpiod/tests/line_config.rs
 create mode 100644 bindings/rust/libgpiod/tests/line_info.rs
 create mode 100644 bindings/rust/libgpiod/tests/line_request.rs
 create mode 100644 bindings/rust/libgpiod/tests/request_config.rs

-- 
2.31.1.272.g89b43f80a514


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2022-08-09  6:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-02 12:18 [PATCH V5 0/8] libgpiod: Add Rust bindings Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 1/8] libgpiod: Add libgpiod-sys rust crate Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 2/8] libgpiod-sys: Add pre generated rust bindings Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 3/8] libgpiod: Add rust wrapper crate Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 4/8] libgpiod: Add rust examples Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 5/8] libgpiod: Add gpiosim rust crate Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 6/8] gpiosim: Add pre generated rust bindings Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 7/8] libgpiod: Add rust tests Viresh Kumar
2022-08-02 12:18 ` [PATCH V5 8/8] libgpiod: Integrate building of rust bindings with make Viresh Kumar
2022-08-05 14:25 ` [PATCH V5 0/8] libgpiod: Add Rust bindings Bartosz Golaszewski
2022-08-09  5:59   ` Viresh Kumar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).