All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kent Gibson <warthog618@gmail.com>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: "Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Vincent Guittot" <vincent.guittot@linaro.org>,
	linux-gpio@vger.kernel.org,
	"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: Re: [PATCH V7 3/8] libgpiod: Add rust wrapper crate
Date: Tue, 18 Oct 2022 11:27:36 +0800	[thread overview]
Message-ID: <Y04dKCIhFPbJRFqC@sol> (raw)
In-Reply-To: <6a94249d2d69bc5c1907fea9ed80c9d7e34278aa.1665744170.git.viresh.kumar@linaro.org>

On Fri, Oct 14, 2022 at 04:17:20PM +0530, Viresh Kumar wrote:
> Add rust wrapper crate, around the libpiod-sys crate added earlier, to
> provide a convenient interface for the users.
> 
> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

One more thing - I overlooked trying to build on 32-bit while reviewing.
(in this case on a Raspberry Pi 4)

Unfortunately that fails:

   Compiling libgpiod v0.1.0 (/home/pi/libgpiod/bindings/rust/libgpiod)
error[E0308]: mismatched types
    --> libgpiod/src/edge_event.rs:32:88
     |
32   |         let event = unsafe { gpiod::gpiod_edge_event_buffer_get_event(buffer.buffer(), index) };
     |                              ----------------------------------------                  ^^^^^ expected `u32`, found `u64`
     |                              |
     |                              arguments to this function are incorrect
     |
note: function defined here
    --> /home/pi/libgpiod/bindings/rust/libgpiod-sys/src/bindings.rs:1151:12
     |
1151 |     pub fn gpiod_edge_event_buffer_get_event(
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: you can convert a `u64` to a `u32` and panic if the converted value doesn't fit
     |
32   |         let event = unsafe { gpiod::gpiod_edge_event_buffer_get_event(buffer.buffer(), index.try_into().unwrap()) };
     |                                                                                             ++++++++++++++++++++

error[E0308]: mismatched types
  --> libgpiod/src/edge_event.rs:81:18
   |
80 |     pub fn global_seqno(&self) -> u64 {
   |                                   --- expected `u64` because of return type
81 |         unsafe { gpiod::gpiod_edge_event_get_global_seqno(self.event) }
   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
   |
help: you can convert a `u32` to a `u64`
   |
81 |         unsafe { gpiod::gpiod_edge_event_get_global_seqno(self.event).into() }
   |                                                                      +++++++

error[E0308]: mismatched types
  --> libgpiod/src/edge_event.rs:89:18
   |
88 |     pub fn line_seqno(&self) -> u64 {
   |                                 --- expected `u64` because of return type
89 |         unsafe { gpiod::gpiod_edge_event_get_line_seqno(self.event) }
   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
   |
help: you can convert a `u32` to a `u64`
   |
89 |         unsafe { gpiod::gpiod_edge_event_get_line_seqno(self.event).into() }
   |                                                                    +++++++

error[E0308]: mismatched types
   --> libgpiod/src/line_config.rs:100:72
    |
100 |             unsafe { gpiod::gpiod_line_config_get_offsets(self.config, &mut num, &mut offsets) };
    |                      ------------------------------------              ^^^^^^^^ expected `u32`, found `u64`
    |                      |
    |                      arguments to this function are incorrect
    |
    = note:    expected raw pointer `*mut u32`
            found mutable reference `&mut u64`
note: function defined here
   --> /home/pi/libgpiod/bindings/rust/libgpiod-sys/src/bindings.rs:847:12
    |
847 |     pub fn gpiod_line_config_get_offsets(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> libgpiod/src/line_info.rs:168:40
    |
168 |         Duration::from_micros(unsafe { gpiod::gpiod_line_info_get_debounce_period_us(self.info) })
    |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
    |
help: you can convert a `u32` to a `u64`
    |
168 |         Duration::from_micros(unsafe { gpiod::gpiod_line_info_get_debounce_period_us(self.info).into() })
    |                                                                                                +++++++

error[E0308]: mismatched types
    --> libgpiod/src/line_request.rs:226:17
     |
223  |             gpiod::gpiod_line_request_read_edge_event(
     |             ----------------------------------------- arguments to this function are incorrect
...
226  |                 buffer.capacity() as u64,
     |                 ^^^^^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `u64`
     |
note: function defined here
    --> /home/pi/libgpiod/bindings/rust/libgpiod-sys/src/bindings.rs:1058:12
     |
1058 |     pub fn gpiod_line_request_read_edge_event(
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: you can convert a `u64` to a `u32` and panic if the converted value doesn't fit
     |
226  |                 (buffer.capacity() as u64).try_into().unwrap(),
     |                 +                        +++++++++++++++++++++

error[E0308]: mismatched types
   --> libgpiod/src/line_settings.rs:209:17
    |
207 |             gpiod::gpiod_line_settings_set_debounce_period_us(
    |             ------------------------------------------------- arguments to this function are incorrect
208 |                 self.settings,
209 |                 period.as_micros() as u64,
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u32`, found `u64`
    |
note: function defined here
   --> /home/pi/libgpiod/bindings/rust/libgpiod-sys/src/bindings.rs:746:12
    |
746 |     pub fn gpiod_line_settings_set_debounce_period_us(
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: you can convert a `u64` to a `u32` and panic if the converted value doesn't fit
    |
209 |                 (period.as_micros() as u64).try_into().unwrap(),
    |                 +                         +++++++++++++++++++++

error[E0308]: mismatched types
   --> libgpiod/src/line_settings.rs:217:13
    |
217 |             gpiod::gpiod_line_settings_get_debounce_period_us(self.settings)
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `u64`, found `u32`
    |
help: you can convert a `u32` to a `u64`
    |
217 |             gpiod::gpiod_line_settings_get_debounce_period_us(self.settings).into()
    |                                                                             +++++++

For more information about this error, try `rustc --explain E0308`.
error: could not compile `libgpiod` due to 8 previous errors

---

An example of one of the relevant generated signatures is:

    pub fn gpiod_edge_event_buffer_get_event(
        buffer: *mut gpiod_edge_event_buffer,
        index: ::std::os::raw::c_ulong,
    ) -> *mut gpiod_edge_event;

On 32-bit c_ulong maps to u32, not u64.

Cheers,
Kent.


  parent reply	other threads:[~2022-10-18  3:36 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-14 10:47 [PATCH V7 0/8] libgpiod: Add Rust bindings Viresh Kumar
2022-10-14 10:47 ` [PATCH V7 1/8] libgpiod: Add libgpiod-sys rust crate Viresh Kumar
2022-10-17 12:59   ` Kent Gibson
2022-10-18 11:22     ` Viresh Kumar
2022-10-18 11:42       ` Miguel Ojeda
2022-10-18 11:49       ` Kent Gibson
2022-10-19  6:46         ` Viresh Kumar
2022-10-19  7:21           ` Kent Gibson
2022-10-19 11:22             ` Viresh Kumar
2022-10-19 12:01               ` Kent Gibson
2022-10-20  5:34                 ` Viresh Kumar
2022-10-27 12:18                 ` Bartosz Golaszewski
2022-10-14 10:47 ` [PATCH V7 2/8] libgpiod-sys: Add pre generated rust bindings Viresh Kumar
2022-10-14 10:47 ` [PATCH V7 3/8] libgpiod: Add rust wrapper crate Viresh Kumar
2022-10-17 12:59   ` Kent Gibson
2022-10-21 11:22     ` Viresh Kumar
2022-10-21 12:39       ` Kent Gibson
2022-10-27 12:09         ` Bartosz Golaszewski
2022-10-31 12:33           ` Kent Gibson
2022-10-31 12:45             ` Bartosz Golaszewski
2022-11-02  4:00             ` Viresh Kumar
2022-11-02 12:47               ` Bartosz Golaszewski
2022-11-02 13:08                 ` Kent Gibson
2022-11-02 16:34                   ` Bartosz Golaszewski
2022-11-03  0:38                     ` Kent Gibson
2022-11-03  8:35                       ` Bartosz Golaszewski
2022-11-03 12:29                         ` Kent Gibson
2022-11-04 15:51                           ` Bartosz Golaszewski
2022-10-18  3:27   ` Kent Gibson [this message]
2022-10-21 11:25     ` Viresh Kumar
2022-10-14 10:47 ` [PATCH V7 4/8] libgpiod: Add rust examples Viresh Kumar
2022-10-17 13:00   ` Kent Gibson
2022-10-14 10:47 ` [PATCH V7 5/8] libgpiod: Add gpiosim rust crate Viresh Kumar
2022-10-17 13:00   ` Kent Gibson
2022-10-21  9:56     ` Viresh Kumar
2022-10-14 10:47 ` [PATCH V7 6/8] gpiosim: Add pre generated rust bindings Viresh Kumar
2022-10-14 10:47 ` [PATCH V7 7/8] libgpiod: Add rust tests Viresh Kumar
2022-10-17 13:00   ` Kent Gibson
2022-10-17 14:30     ` Kent Gibson
2022-10-20 10:37     ` Viresh Kumar
2022-10-20 11:02       ` Kent Gibson
2022-10-20 12:40         ` Bartosz Golaszewski
2022-10-20 15:16           ` Miguel Ojeda
2022-10-14 10:47 ` [PATCH V7 8/8] libgpiod: Integrate building of rust bindings with make Viresh Kumar
2022-10-14 17:03 ` [PATCH V7 0/8] libgpiod: Add Rust bindings Miguel Ojeda
2022-10-20 13:29   ` Björn Roy Baron
2022-10-21  9:39     ` Viresh Kumar
2022-10-21 14:34       ` Björn Roy Baron
2022-10-25  6:42         ` Viresh Kumar
2022-10-29 17:46           ` Björn Roy Baron

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=Y04dKCIhFPbJRFqC@sol \
    --to=warthog618@gmail.com \
    --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=viresh.kumar@linaro.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.