From: Viresh Kumar <viresh.kumar@linaro.org>
To: Linus Walleij <linus.walleij@linaro.org>,
Bartosz Golaszewski <brgl@bgdev.pl>
Cc: "Viresh Kumar" <viresh.kumar@linaro.org>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
linux-gpio@vger.kernel.org, "Kent Gibson" <warthog618@gmail.com>,
"Miguel Ojeda" <miguel.ojeda.sandonis@gmail.com>,
"Wedson Almeida Filho" <wedsonaf@google.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
stratos-dev@op-lists.linaro.org,
"Gerard Ryan" <g.m0n3y.2503@gmail.com>
Subject: [PATCH V6 0/8] libgpiod: Add Rust bindings
Date: Mon, 26 Sep 2022 16:38:12 +0530 [thread overview]
Message-ID: <cover.1664189248.git.viresh.kumar@linaro.org> (raw)
Hello,
Here is another version of rust bindings for libgpiod v2.0, based of the
next/libgpiod-2.0 + the HTE patch from Bartosz [1].
Pushed here:
https://github.com/vireshk/libgpiod master
[I have pushed v5 and v4 there too, in case someone wants to look at the
changes].
V5->V6:
- Updates according to the new line-settings interface.
- New file, line_settings.rs.
- Renamed 'enum Setting' as 'SettingVal' to avoid conflicting names, as we also
have 'struct Settings' now.
- Support for HTE clock type.
- Implement 'Eq' for public structure/enums (reported by build).
- Remove 'SettingKindMap' and 'SettingMap' as they aren't required anymore.
- Updated tests based on new interface.
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
[1] https://lore.kernel.org/all/20220923081223.25851-1-brgl@bgdev.pl/
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 | 1173 +++++++++++++++++
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 | 42 +
bindings/rust/libgpiod/examples/gpioinfo.rs | 95 ++
bindings/rust/libgpiod/examples/gpiomon.rs | 73 +
bindings/rust/libgpiod/examples/gpioset.rs | 60 +
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 | 471 +++++++
bindings/rust/libgpiod/src/line_config.rs | 118 ++
bindings/rust/libgpiod/src/line_info.rs | 180 +++
bindings/rust/libgpiod/src/line_request.rs | 246 ++++
bindings/rust/libgpiod/src/line_settings.rs | 277 ++++
bindings/rust/libgpiod/src/request_config.rs | 96 ++
bindings/rust/libgpiod/tests/chip.rs | 97 ++
bindings/rust/libgpiod/tests/common/config.rs | 134 ++
bindings/rust/libgpiod/tests/common/mod.rs | 10 +
bindings/rust/libgpiod/tests/edge_event.rs | 294 +++++
bindings/rust/libgpiod/tests/info_event.rs | 125 ++
bindings/rust/libgpiod/tests/line_config.rs | 105 ++
bindings/rust/libgpiod/tests/line_info.rs | 279 ++++
bindings/rust/libgpiod/tests/line_request.rs | 519 ++++++++
bindings/rust/libgpiod/tests/line_settings.rs | 226 ++++
.../rust/libgpiod/tests/request_config.rs | 38 +
configure.ac | 16 +
46 files changed, 6043 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/line_settings.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/line_settings.rs
create mode 100644 bindings/rust/libgpiod/tests/request_config.rs
--
2.31.1.272.g89b43f80a514
next reply other threads:[~2022-09-26 12:32 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-26 11:08 Viresh Kumar [this message]
2022-09-26 11:08 ` [PATCH V6 1/8] libgpiod: Add libgpiod-sys rust crate Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 2/8] libgpiod-sys: Add pre generated rust bindings Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 3/8] libgpiod: Add rust wrapper crate Viresh Kumar
2022-09-26 13:29 ` Bartosz Golaszewski
2022-09-26 15:26 ` Viresh Kumar
2022-09-27 13:18 ` Bartosz Golaszewski
2022-09-27 13:57 ` Viresh Kumar
2022-09-27 15:25 ` Bartosz Golaszewski
2022-09-28 11:10 ` Viresh Kumar
2022-09-28 12:20 ` Bartosz Golaszewski
2022-09-28 15:17 ` Viresh Kumar
2022-09-28 17:54 ` Bartosz Golaszewski
2022-09-29 6:54 ` Viresh Kumar
2022-09-29 7:37 ` Bartosz Golaszewski
2022-09-29 8:58 ` Viresh Kumar
2022-09-29 11:16 ` Bartosz Golaszewski
2022-09-29 11:43 ` Kent Gibson
2022-09-29 13:55 ` Miguel Ojeda
2022-10-11 4:16 ` Viresh Kumar
2022-10-11 4:25 ` Kent Gibson
2022-10-11 4:37 ` Viresh Kumar
2022-10-11 4:46 ` Viresh Kumar
2022-10-13 6:12 ` Viresh Kumar
2022-10-14 9:45 ` Bartosz Golaszewski
2022-10-14 9:57 ` Viresh Kumar
2022-10-14 14:25 ` Bartosz Golaszewski
2022-10-14 16:06 ` Kent Gibson
2022-10-17 11:26 ` Viresh Kumar
2022-10-17 11:34 ` Kent Gibson
2022-10-17 11:37 ` Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 4/8] libgpiod: Add rust examples Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 5/8] libgpiod: Add gpiosim rust crate Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 6/8] gpiosim: Add pre generated rust bindings Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 7/8] libgpiod: Add rust tests Viresh Kumar
2022-09-26 11:08 ` [PATCH V6 8/8] libgpiod: Integrate building of rust bindings with make Viresh Kumar
2022-09-26 15:57 ` [PATCH V6 0/8] libgpiod: Add Rust bindings Viresh Kumar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1664189248.git.viresh.kumar@linaro.org \
--to=viresh.kumar@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=brgl@bgdev.pl \
--cc=g.m0n3y.2503@gmail.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=miguel.ojeda.sandonis@gmail.com \
--cc=stratos-dev@op-lists.linaro.org \
--cc=vincent.guittot@linaro.org \
--cc=warthog618@gmail.com \
--cc=wedsonaf@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).