diff options
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | src/kernel.rs | 11 | ||||
| -rw-r--r-- | src/mem.rs | 1 | ||||
| -rw-r--r-- | src/mem/alloc.rs | 63 | ||||
| -rw-r--r-- | src/mem/types.rs | 54 | 
5 files changed, 67 insertions, 63 deletions
| @@ -11,6 +11,7 @@ lto = true  default = []  bsp_rpi2 = []  verbose = [] +flag = []  [[bin]]  name = "kernel" diff --git a/src/kernel.rs b/src/kernel.rs index 012a7ff..a848ce5 100644 --- a/src/kernel.rs +++ b/src/kernel.rs @@ -59,10 +59,13 @@ unsafe fn kernel_init() -> ! {  fn kernel_main() -> ! {  	#[cfg(not(feature="verbose"))]  	{ -		draw::draw_ukraine_flag(); -		println!(); -		draw::draw_american_flag(); -		println!(); +		#[cfg(feature="flag")] +		{ +			draw::draw_ukraine_flag(); +			println!(); +			draw::draw_american_flag(); +			println!(); +		}  		println!("\x1b[91mInitialized\x1b[0m \x1b[92m{}\x1b[0m \x1b[93mv{}\x1b[0m", env!("CARGO_PKG_NAME"), env!("CARGO_PKG_VERSION"));  		println!("\x1b[94mAuthors:\x1b[0m \x1b[95m{}\x1b[0m", env!("CARGO_PKG_AUTHORS")); @@ -2,3 +2,4 @@  //!  //! Provides the Allocator for the OS.  pub mod alloc; +mod types; diff --git a/src/mem/alloc.rs b/src/mem/alloc.rs index 1861c2c..e665f41 100644 --- a/src/mem/alloc.rs +++ b/src/mem/alloc.rs @@ -8,6 +8,7 @@ use crate::sync::interface::Mutex;  use crate::vprintln;  use core::fmt;  use core::fmt::{Debug,Formatter}; +use super::types::*;  /// # Initialize Queue  /// - Name: Symbol name @@ -41,6 +42,7 @@ pub struct QueueItem<'a, T: Sized> {  	/// to the next item.  	next: Option<*mut QueueItem<'a, T>>,  } +  impl<T> QueueItem<'_,T> {  	/// # Get the inner data  	/// @@ -53,6 +55,7 @@ impl<T> QueueItem<'_,T> {  		self.inner() as *mut T as *mut u8  	}  } +  /// # Sharing Thread Safety for QueueItem  unsafe impl<T> Send for QueueItem<'_,T> {} @@ -78,6 +81,7 @@ pub struct QueueAllocator<'a, T: Sized, const COUNT: usize> {  	/// Stores synchronization wrapper around the data pool  	pub inner: NullLock<[QueueItem<'a, T>;COUNT]>,  } +  /// # Sharing Thread Safety for QueueAllocator  unsafe impl<T,const COUNT: usize> Send for QueueAllocator<'_,T,COUNT> {} @@ -176,65 +180,6 @@ impl<T: Debug,const COUNT: usize> Debug for QueueAllocator<'_,T,COUNT> {  	}  } - - - - -/// # u256 struct -/// -/// 256 bit size field -#[derive(Copy,Clone)] -pub struct U256(u128,u128); -impl U256 { -	pub const fn new() -> Self { -		U256(0,0) -	} -} - -/// # u512 struct -/// -/// 512 bit size field -#[derive(Copy,Clone)] -pub struct U512(U256,U256); -impl U512 { -	pub const fn new() -> Self { -		U512(U256::new(), U256::new()) -	} -} - -/// # u1024 struct -/// -/// 1024 bit size field -#[derive(Copy,Clone)] -pub struct U1024(U512,U512); -impl U1024 { -	pub const fn new() -> Self { -		U1024(U512::new(), U512::new()) -	} -} - -/// # u2048 struct -/// -/// 2048 bit size field -#[derive(Copy,Clone)] -pub struct U2048(U1024,U1024); -impl U2048 { -	pub const fn new() -> Self { -		U2048(U1024::new(), U1024::new()) -	} -} - -/// # u4096 struct -/// -/// 4096 bit size field -#[derive(Copy,Clone)] -pub struct U4096(U2048,U2048); -impl U4096 { -	pub const fn new() -> Self { -		U4096(U2048::new(), U2048::new()) -	} -} -  /// # Grand Allocator  ///  /// The structure that uses different sized pools and allocates memory chunks diff --git a/src/mem/types.rs b/src/mem/types.rs new file mode 100644 index 0000000..04522bc --- /dev/null +++ b/src/mem/types.rs @@ -0,0 +1,54 @@ +/// # u256 struct +/// +/// 256 bit size field +#[derive(Copy,Clone)] +pub struct U256(u128,u128); +impl U256 { +	pub const fn new() -> Self { +		U256(0,0) +	} +} + +/// # u512 struct +/// +/// 512 bit size field +#[derive(Copy,Clone)] +pub struct U512(U256,U256); +impl U512 { +	pub const fn new() -> Self { +		U512(U256::new(), U256::new()) +	} +} + +/// # u1024 struct +/// +/// 1024 bit size field +#[derive(Copy,Clone)] +pub struct U1024(U512,U512); +impl U1024 { +	pub const fn new() -> Self { +		U1024(U512::new(), U512::new()) +	} +} + +/// # u2048 struct +/// +/// 2048 bit size field +#[derive(Copy,Clone)] +pub struct U2048(U1024,U1024); +impl U2048 { +	pub const fn new() -> Self { +		U2048(U1024::new(), U1024::new()) +	} +} + +/// # u4096 struct +/// +/// 4096 bit size field +#[derive(Copy,Clone)] +pub struct U4096(U2048,U2048); +impl U4096 { +	pub const fn new() -> Self { +		U4096(U2048::new(), U2048::new()) +	} +} | 
