nac3/runkernel/src/main.rs

62 lines
1.2 KiB
Rust
Raw Normal View History

#![deny(clippy::all)]
#![warn(clippy::pedantic)]
#![allow(clippy::semicolon_if_nothing_returned, clippy::uninlined_format_args)]
use std::env;
static mut NOW: i64 = 0;
#[no_mangle]
pub extern "C" fn now_mu() -> i64 {
unsafe { NOW }
}
#[no_mangle]
pub extern "C" fn at_mu(t: i64) {
unsafe { NOW = t }
}
#[no_mangle]
pub extern "C" fn delay_mu(dt: i64) {
unsafe { NOW += dt }
}
#[no_mangle]
pub extern "C" fn rtio_init() {
println!("rtio_init");
}
#[no_mangle]
pub extern "C" fn rtio_get_counter() -> i64 {
0
}
#[no_mangle]
pub extern "C" fn rtio_output(target: i32, data: i32) {
println!("rtio_output @{} target={:04x} data={}", unsafe { NOW }, target, data);
}
#[no_mangle]
pub extern "C" fn print_int32(x: i32) {
println!("print_int32: {}", x);
}
#[no_mangle]
pub extern "C" fn print_int64(x: i64) {
println!("print_int64: {}", x);
}
#[no_mangle]
2022-02-23 11:43:41 +08:00
pub extern "C" fn __nac3_personality(_state: u32, _exception_object: u32, _context: u32) -> u32 {
unimplemented!();
}
fn main() {
let filename = env::args().nth(1).unwrap();
unsafe {
let lib = libloading::Library::new(filename).unwrap();
2024-06-12 14:45:03 +08:00
let func: libloading::Symbol<unsafe extern "C" fn()> = lib.get(b"__modinit__").unwrap();
func()
}
}