diff --git a/l0dable/src/lib.rs b/l0dable/src/lib.rs index e3960fdbedf7c0b89300226489f0022a53efa406..17623a48d716a0430743df255e82dca962dd948b 100644 --- a/l0dable/src/lib.rs +++ b/l0dable/src/lib.rs @@ -65,8 +65,9 @@ pub mod bindings { include!(concat!(env!("OUT_DIR"), "/bindings.rs")); } -use bindings::*; +mod os; +pub use os::*; mod display; pub use display::{Display, Color, LineStyle, FillStyle}; mod buttons; diff --git a/l0dable/src/os.rs b/l0dable/src/os.rs new file mode 100644 index 0000000000000000000000000000000000000000..af7a2283924cf08464b0981f711d35b62753683c --- /dev/null +++ b/l0dable/src/os.rs @@ -0,0 +1,23 @@ +use super::bindings::*; + +pub fn exec(path: &str) -> ! { + let mut pathbuf = super::str_to_cstr(path); + unsafe { + epic_exec(pathbuf.as_mut_ptr()); + } + unreachable!() +} + +pub fn exit(ret: i32) -> ! { + unsafe { + epic_exit(ret); + } + unreachable!() +} + +pub fn system_reset() -> ! { + unsafe { + epic_system_reset(); + } + unreachable!() +}