2022-08-05 06:22:23 -05:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2022, Able <able@ablecorp.us>
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
|
|
*/
|
|
|
|
|
2022-01-26 19:43:03 -06:00
|
|
|
//! main library for the AbleOS kernel.
|
|
|
|
//! exposing all the kernel functionality to the rest of the kernel.
|
|
|
|
//!
|
|
|
|
//!
|
2021-11-21 02:13:50 -06:00
|
|
|
|
2021-11-16 00:09:27 -06:00
|
|
|
#![no_std]
|
2022-06-15 17:19:36 -05:00
|
|
|
#![feature(
|
|
|
|
abi_x86_interrupt,
|
|
|
|
alloc_error_handler,
|
|
|
|
asm_sym, // Needed for RISC-V
|
|
|
|
naked_functions,
|
|
|
|
prelude_import,
|
|
|
|
)]
|
2022-08-06 06:48:40 -05:00
|
|
|
#![feature(arbitrary_enum_discriminant)]
|
2022-08-05 06:22:23 -05:00
|
|
|
#![feature(custom_test_frameworks)]
|
|
|
|
#![reexport_test_harness_main = "test_main"]
|
2022-08-06 06:48:40 -05:00
|
|
|
#![test_runner(crate::test_runner)]
|
2022-04-11 17:23:11 -05:00
|
|
|
|
|
|
|
#[macro_use]
|
|
|
|
pub extern crate log;
|
|
|
|
|
|
|
|
pub extern crate alloc;
|
|
|
|
pub extern crate externc_libm as libm;
|
2021-11-16 00:09:27 -06:00
|
|
|
|
2022-01-26 22:06:04 -06:00
|
|
|
/// Contains architecture specific code for aarch64.
|
2021-11-16 00:09:27 -06:00
|
|
|
#[cfg(target_arch = "aarch64")]
|
|
|
|
#[path = "arch/aarch64/mod.rs"]
|
2021-11-22 10:30:49 -06:00
|
|
|
pub mod arch;
|
2021-11-16 00:09:27 -06:00
|
|
|
|
2022-01-26 22:06:04 -06:00
|
|
|
/// Contains architecture specific code for riscv64.
|
2021-11-17 08:42:54 -06:00
|
|
|
#[cfg(target_arch = "riscv64")]
|
|
|
|
#[path = "arch/riscv/mod.rs"]
|
2021-11-22 10:30:49 -06:00
|
|
|
pub mod arch;
|
|
|
|
|
2022-04-11 17:23:11 -05:00
|
|
|
/// Contains architecture specific code for x86_64.
|
|
|
|
#[cfg(target_arch = "x86_64")]
|
|
|
|
#[path = "arch/x86_64/mod.rs"]
|
|
|
|
pub mod arch;
|
2022-01-16 14:55:58 -06:00
|
|
|
|
2022-03-11 14:18:07 -06:00
|
|
|
#[cfg(target_arch = "x86_64")]
|
|
|
|
pub mod port_io;
|
|
|
|
|
2022-03-11 17:13:41 -06:00
|
|
|
#[macro_use]
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod print;
|
2022-03-11 17:13:41 -06:00
|
|
|
|
2022-01-16 19:42:11 -06:00
|
|
|
#[macro_use]
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod serial_print;
|
2021-11-17 08:42:54 -06:00
|
|
|
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod boot_conf;
|
|
|
|
pub mod devices;
|
2021-11-22 10:30:49 -06:00
|
|
|
pub mod driver_traits;
|
|
|
|
pub mod experiments;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod filesystem;
|
2022-08-02 05:44:42 -05:00
|
|
|
pub mod graphics;
|
2022-01-26 19:43:03 -06:00
|
|
|
pub mod kernel_state;
|
2021-11-16 00:09:27 -06:00
|
|
|
pub mod keyboard;
|
2021-11-22 10:30:49 -06:00
|
|
|
pub mod kmain;
|
2022-01-16 19:42:11 -06:00
|
|
|
pub mod logger;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod prelude;
|
2022-07-31 01:54:01 -05:00
|
|
|
pub mod ps2_mouse;
|
2021-11-16 00:09:27 -06:00
|
|
|
pub mod relib;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod rhai_shell;
|
2022-02-20 05:05:50 -06:00
|
|
|
pub mod scheduler;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod scratchpad;
|
|
|
|
pub mod stdio;
|
|
|
|
pub mod time;
|
2022-01-16 09:23:19 -06:00
|
|
|
pub mod utils;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod virtio;
|
2022-01-25 19:40:37 -06:00
|
|
|
pub mod wasm;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub mod wasm_jumploader;
|
2022-01-16 09:23:19 -06:00
|
|
|
|
2022-06-22 13:59:24 -05:00
|
|
|
pub mod allocator;
|
|
|
|
|
|
|
|
// pub use allocator as aalloc;
|
2022-07-28 03:39:20 -05:00
|
|
|
pub mod handle;
|
2022-07-31 01:54:01 -05:00
|
|
|
pub mod hardware;
|
2022-07-28 10:57:28 -05:00
|
|
|
pub mod ipc;
|
2022-07-29 12:48:45 -05:00
|
|
|
pub mod panic;
|
2022-04-11 17:23:11 -05:00
|
|
|
mod unicode_utils;
|
2022-06-02 06:00:26 -05:00
|
|
|
pub mod vga_e;
|
2022-07-31 01:54:01 -05:00
|
|
|
pub mod vterm;
|
2022-08-05 06:22:23 -05:00
|
|
|
// pub mod vgai;
|
2022-01-07 10:31:47 -06:00
|
|
|
|
2022-04-11 17:23:27 -05:00
|
|
|
#[prelude_import]
|
|
|
|
pub use prelude::rust_2021::*;
|
|
|
|
|
2022-01-26 19:43:03 -06:00
|
|
|
pub use driver_traits::*;
|
|
|
|
pub use experiments::*;
|
|
|
|
pub use graphics::*;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub use kernel;
|
|
|
|
pub use kernel::messaging;
|
2022-07-29 12:48:45 -05:00
|
|
|
// pub use kernel::panic;
|
2022-01-26 19:43:03 -06:00
|
|
|
pub use kernel_state::*;
|
|
|
|
pub use keyboard::*;
|
|
|
|
pub use logger::*;
|
|
|
|
pub use relib::*;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub use scratchpad::*;
|
2022-01-26 19:43:03 -06:00
|
|
|
pub use utils::*;
|
|
|
|
pub use virtio::*;
|
2022-04-11 17:23:11 -05:00
|
|
|
pub use wasm::*;
|
2022-08-05 06:22:23 -05:00
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
pub mod tests;
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
pub use tests::test_kernel_main;
|
|
|
|
|
|
|
|
#[cfg(test)]
|
|
|
|
use crate::tests::test_runner;
|