https://github.com/flier/rust-dpdk
Rust bindings to DPDK
https://github.com/flier/rust-dpdk
Last synced: over 1 year ago
JSON representation
Rust bindings to DPDK
- Host: GitHub
- URL: https://github.com/flier/rust-dpdk
- Owner: flier
- Created: 2016-05-16T11:24:16.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2021-01-26T04:00:23.000Z (over 5 years ago)
- Last Synced: 2025-03-18T05:06:58.109Z (over 1 year ago)
- Language: Rust
- Size: 972 KB
- Stars: 80
- Watchers: 5
- Forks: 12
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rust-dpdk
Rust-Dpdk is an experimental prototype to wrap [DPDK](http://dpdk.org/) API with Rust language.
## Build
First, please follow [the official document](http://dpdk.org/doc/guides/linux_gsg/build_dpdk.html) to setup a DPDK development envrionment.
```
$ CONFIG_RTE_BUILD_COMBINE_LIBS=y EXTRA_CFLAGS="-fPIC -O0 -g -ggdb" make install T=x86_64-native-linuxapp-gcc -j 4
```
And build `rust-dpdk` with `RTE_SDK` envrionment variable:
```
$ RTE_SDK= cargo build
```
## Examples
```rust
extern crate rte;
use std::env;
use std::ptr;
use std::os::raw::c_void;
use rte::*;
extern "C" fn lcore_hello(_: *const c_void) -> i32 {
println!("hello from core {}", lcore::id().unwrap());
0
}
fn main() {
let args: Vec = env::args().collect();
eal::init(&args).expect("Cannot init EAL");
// call lcore_hello() on every slave lcore
lcore::foreach_slave(|lcore_id| {
launch::remote_launch(lcore_hello, None, lcore_id).expect("Cannot launch task");
});
// call it on master lcore too
lcore_hello(ptr::null());
launch::mp_wait_lcore();
}
```
Please check [l2fwd](rte/examples/l2fwd/l2fwd.rs) example for details.
```
$ sudo RTE_SDK= cargo run --example l2fwd -- --log-level 8 -v -c f -- -p f
```