From: Bruce Richardson <bruce.richardson@intel.com>
To: Gregory Etelson <getelson@nvidia.com>
Cc: <dev@dpdk.org>, <dsosnowski@nvidia.com>,
<harry.van.haaren@intel.com>, <igootorov@gmail.com>,
<mkashani@nvidia.com>, <stephen@networkplumber.org>,
<thomas@monjalon.net>
Subject: Re: [PATCH v4] rust: support raw DPDK API
Date: Sat, 22 Mar 2025 17:39:35 +0000 [thread overview]
Message-ID: <Z9711_x0IBYetdZR@bricha3-mobl1.ger.corp.intel.com> (raw)
In-Reply-To: <20250322105911.12378-1-getelson@nvidia.com>
On Sat, Mar 22, 2025 at 12:59:11PM +0200, Gregory Etelson wrote:
> The patch converts include files with DPDK API to RUST and binds new
> RUST API files into raw module under dpdk crate.
>
> The RUST files and DPDK libraries build from C sources
> allow creation of DPDK application in RUST.
>
> RUST DPDK application must specify the `dpdk` crate as
> dependency in Cargo.toml file.
>
> RUST `dpdk` crate is installed into
> $MESON_INSTALL_DESTDIR_PREFIX/$libdir/rust directory.
>
> Software requirements:
> - clang
> - RUST installation
> - bindgen-cli crate
>
> RUST dpdk installation instructions:
> 1. Configure DPDK with `-Deanble_rust=true`
> 2. Build and install DPDK. The installation procedure will create
> $MESON_INSTALL_DESTDIR_PREFIX/$libdir/rust crate.
> 3. Update PKG_CONFIG_PATH to point to DPDK installation.
>
> Signed-off-by: Gregory Etelson <getelson@nvidia.com>
> ---
> v2:
> Change rust crate name from dpdklib to dpdk.
> Add raw module for to link with C API.
> Add "cargo:rerun-if-changed=build.rs".
> v3:
> Move init_port_config() to Port.
> Move start_port() to Port.
> Remove Cargo.lock from git repository
> Reformat code.
> v4:
> Blocked bindgen to convert stdlib functions with u128 type.
> Allow compilation of C style symbols.
> ---
> buildtools/meson.build | 4 +
> buildtools/rust-env.sh | 96 ++++++++++++
> examples/rust/helloworld/Cargo.toml | 7 +
> examples/rust/helloworld/build.rs | 24 +++
> examples/rust/helloworld/src/main.rs | 219 +++++++++++++++++++++++++++
> meson_options.txt | 2 +
> 6 files changed, 352 insertions(+)
> create mode 100755 buildtools/rust-env.sh
> create mode 100644 examples/rust/helloworld/Cargo.toml
> create mode 100644 examples/rust/helloworld/build.rs
> create mode 100644 examples/rust/helloworld/src/main.rs
>
Hi Gregory, some high-level feedback:
* I'd suggest for future revisions splitting this into two patches. The rust
example should be separate from a patch adding the basic rust
infrastructure.
* For the example, I'd suggest that the helloworld rust example should
correspond to the regular "C" helloworld example, i.e just init DPDK and
print helloworld. If we want a basic packet handling example, it should be
an l2fwd one - again to align with the "C" examples.
* However, in terms of the examples, if the idea is to provide higher level
"rustic" APIs for DPDK, the examples should be written to use that. Any use
of the low-level C APIs should be in a testing app only, rather than an example
app. IMHO We want to encourage proper rust usage, not C-code just rewritten to
use a different compiler.
Regards,
/Bruce
prev parent reply other threads:[~2025-03-22 17:39 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-06 13:37 [PATCH] rust: support " Gregory Etelson
2025-03-06 19:26 ` Van Haaren, Harry
2025-03-07 16:56 ` Etelson, Gregory
2025-03-07 15:54 ` Van Haaren, Harry
2025-03-07 16:20 ` Bruce Richardson
2025-03-07 18:15 ` Etelson, Gregory
2025-03-07 18:00 ` Etelson, Gregory
2025-03-08 14:28 ` Igor Gutorov
2025-03-08 19:14 ` Etelson, Gregory
2025-03-10 15:31 ` Stephen Hemminger
2025-03-12 5:21 ` Etelson, Gregory
2025-03-08 18:50 ` [PATCH v2] rust: support raw " Gregory Etelson
2025-03-10 16:13 ` Van Haaren, Harry
2025-03-10 16:25 ` Bruce Richardson
2025-03-12 17:19 ` Thomas Monjalon
2025-03-14 19:12 ` Etelson, Gregory
2025-03-10 15:00 ` [PATCH] rust: support " Stephen Hemminger
2025-03-12 5:12 ` Etelson, Gregory
2025-03-10 16:18 ` Stephen Hemminger
2025-03-10 16:30 ` Bruce Richardson
2025-03-12 14:30 ` Etelson, Gregory
2025-03-13 7:56 ` Igor Gutorov
2025-03-12 15:29 ` Igor Gutorov
2025-03-12 17:24 ` Thomas Monjalon
2025-03-14 18:38 ` [PATCH v3] rust: support raw " Gregory Etelson
2025-03-18 8:51 ` Dariusz Sosnowski
2025-03-18 9:12 ` Dariusz Sosnowski
2025-03-22 10:59 ` [PATCH v4] " Gregory Etelson
2025-03-22 17:39 ` Bruce Richardson [this message]
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=Z9711_x0IBYetdZR@bricha3-mobl1.ger.corp.intel.com \
--to=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=dsosnowski@nvidia.com \
--cc=getelson@nvidia.com \
--cc=harry.van.haaren@intel.com \
--cc=igootorov@gmail.com \
--cc=mkashani@nvidia.com \
--cc=stephen@networkplumber.org \
--cc=thomas@monjalon.net \
/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).