A Rust interface to interact with operating systems based on μITRON or its derivative.
This is not an officially supported project.
Cargo.toml:
[dependencies]
itron = { version = "0.1.0", features = ["asp3", "dcre"] }Using the low-level binding:
use core::{mem, ptr};use itron::abi::{acre_tsk,TA_ACT,T_CTSK,EXINF,ID};fncreate_task(param:isize) -> ID{extern"C"fntask_body(exinf:EXINF){let _param = unsafe{ exinf.assume_init()};}let er = unsafe{acre_tsk(&T_CTSK{tskatr:TA_ACT,exinf: mem::MaybeUninit::new(param),task:Some(task_body),itskpri:4,stksz:2048,stk: ptr::null_mut(),})};assert!(er >= 0,"could not create a task (error {})", er);
er
}Using the safe, high-level binding (experimental, requires unstable feature):
use itron::task;fncreate_task(param:isize) -> task::Task{let task_body = move || {let _param = param;};let new_task = task::Task::build().start(create_task).stack_size(2048).initial_priority(4).finish().expect("could not create a task");
new_task.as_ref().activate().unwrap();
new_task
}