All Projects → flier → rust-dpdk

flier / rust-dpdk

Licence: other
Rust bindings to DPDK

Programming Languages

rust
11053 projects
c
50402 projects - #5 most used programming language

rust-dpdk

Rust-Dpdk is an experimental prototype to wrap DPDK API with Rust language.

Build

First, please follow the official document 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=<rte_path> cargo build

Examples

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<String> = 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 example for details.

$ sudo RTE_SDK=<rte_path> cargo run --example l2fwd -- --log-level 8 -v -c f -- -p f
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].