artiq/artiq/runtime.rs/src/lib.rs

47 lines
910 B
Rust
Raw Normal View History

2016-08-17 16:39:05 +08:00
#![no_std]
#![feature(libc)]
2016-08-17 16:39:05 +08:00
#[macro_use]
extern crate std_artiq as std;
extern crate libc;
2016-09-29 02:25:25 +08:00
#[macro_use]
extern crate log;
extern crate log_buffer;
extern crate byteorder;
2016-08-17 16:39:05 +08:00
use std::prelude::v1::*;
2016-09-29 02:25:25 +08:00
use buffer_logger::BufferLogger;
2016-08-30 19:20:04 +08:00
2016-09-29 22:04:42 +08:00
pub mod board;
pub mod io;
pub mod config;
2016-09-30 04:36:04 +08:00
pub mod clock;
pub mod rtio_crg;
2016-09-29 02:25:25 +08:00
pub mod buffer_logger;
pub mod session;
extern {
fn network_init();
fn lwip_service();
}
2016-08-17 16:39:05 +08:00
#[no_mangle]
pub unsafe extern fn rust_main() {
2016-09-29 02:25:25 +08:00
static mut log_buffer: [u8; 4096] = [0; 4096];
BufferLogger::new(&mut log_buffer[..])
.register(move |logger| {
2016-09-30 04:36:04 +08:00
clock::init();
rtio_crg::init();
2016-09-29 02:25:25 +08:00
network_init();
2016-09-29 02:25:25 +08:00
let mut scheduler = io::Scheduler::new();
scheduler.spawn(4096, move |waiter| {
session::handler(waiter, logger)
});
loop {
lwip_service();
scheduler.run()
}
})
2016-08-17 16:39:05 +08:00
}