diff --git a/src/lib.rs b/src/lib.rs index e79038ae..c9809d0d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,6 +18,7 @@ pub mod gdt; pub mod interrupts; pub mod memory; pub mod serial; +pub mod task; pub mod vga_buffer; pub fn init() { diff --git a/src/task/mod.rs b/src/task/mod.rs new file mode 100644 index 00000000..ac01b51a --- /dev/null +++ b/src/task/mod.rs @@ -0,0 +1,22 @@ +use alloc::boxed::Box; +use core::{ + future::Future, + pin::Pin, + task::{Context, Poll}, +}; + +pub struct Task { + future: Pin>>, +} + +impl Task { + pub fn new(future: impl Future + 'static) -> Task { + Task { + future: Box::pin(future), + } + } + + fn poll(&mut self, context: &mut Context) -> Poll<()> { + self.future.as_mut().poll(context) + } +}