add async trait to make FD methods async
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is passing
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	continuous-integration/drone/push Build is passing
				
			Signed-off-by: Julien CLEMENT <julien.clement@epita.fr>
This commit is contained in:
		
							parent
							
								
									ffe889a934
								
							
						
					
					
						commit
						e2c2586a19
					
				
							
								
								
									
										12
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										12
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -2,6 +2,17 @@
 | 
			
		||||
# It is not intended for manual editing.
 | 
			
		||||
version = 3
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "async-trait"
 | 
			
		||||
version = "0.1.60"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
checksum = "677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "proc-macro2",
 | 
			
		||||
 "quote",
 | 
			
		||||
 "syn",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "atomic-polyfill"
 | 
			
		||||
version = "0.1.11"
 | 
			
		||||
@ -146,6 +157,7 @@ dependencies = [
 | 
			
		||||
name = "julios"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "async-trait",
 | 
			
		||||
 "conquer-once",
 | 
			
		||||
 "crossbeam-queue",
 | 
			
		||||
 "futures-util",
 | 
			
		||||
 | 
			
		||||
@ -19,6 +19,7 @@ linked_list_allocator = "0.9.0"
 | 
			
		||||
postcard = "1.0.0"
 | 
			
		||||
serde = { version = "1.0", default-features = false, features = ["alloc"] }
 | 
			
		||||
heapless = "0.7.16"
 | 
			
		||||
async-trait = "0.1.60"
 | 
			
		||||
 | 
			
		||||
[dependencies.lazy_static]
 | 
			
		||||
version = "1.0"
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,7 @@
 | 
			
		||||
use crate::utils::AsyncMutex;
 | 
			
		||||
 | 
			
		||||
use alloc::{collections::BTreeMap, sync::Arc};
 | 
			
		||||
use alloc::{collections::BTreeMap, sync::Arc, boxed::Box};
 | 
			
		||||
use async_trait::async_trait;
 | 
			
		||||
use core::cell::RefCell;
 | 
			
		||||
use lazy_static::lazy_static;
 | 
			
		||||
 | 
			
		||||
@ -35,7 +36,8 @@ impl FDTable {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[async_trait]
 | 
			
		||||
pub trait FileDescriptor {
 | 
			
		||||
    fn write(&mut self, buf: *const u8, count: usize) -> isize;
 | 
			
		||||
    fn read(&mut self, buf: *mut u8, count: usize) -> isize;
 | 
			
		||||
    async fn write(&mut self, buf: &[u8], count: usize) -> isize;
 | 
			
		||||
    async fn read(&mut self, buf: &[u8], count: usize) -> isize;
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +1,8 @@
 | 
			
		||||
use crate::println;
 | 
			
		||||
use crate::fd::{FDId, FileDescriptor, FDt};
 | 
			
		||||
 | 
			
		||||
use alloc::sync::Arc;
 | 
			
		||||
use alloc::{sync::Arc, boxed::Box};
 | 
			
		||||
use async_trait::async_trait;
 | 
			
		||||
use core::cell::RefCell;
 | 
			
		||||
 | 
			
		||||
pub struct IsoFD {
 | 
			
		||||
@ -16,12 +17,13 @@ impl IsoFD {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[async_trait]
 | 
			
		||||
impl FileDescriptor for IsoFD {
 | 
			
		||||
    fn write(&mut self, buf: *const u8, count: usize) -> isize {
 | 
			
		||||
    async fn write(&mut self, buf: &[u8], count: usize) -> isize {
 | 
			
		||||
        0
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fn read(&mut self, buf: *mut u8, count: usize) -> isize {
 | 
			
		||||
    async fn read(&mut self, buf: &[u8], count: usize) -> isize {
 | 
			
		||||
        println!("Read from fd");
 | 
			
		||||
        0
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -3,14 +3,12 @@ mod fd;
 | 
			
		||||
 | 
			
		||||
use crate::println;
 | 
			
		||||
use crate::drivers::atapi::{DRIVE};
 | 
			
		||||
use crate::fd::{FDId, FD_TABLE, FDt};
 | 
			
		||||
use crate::fd::{FD_TABLE, FDt};
 | 
			
		||||
use crate::utils::unserialize;
 | 
			
		||||
 | 
			
		||||
use iso9660::{IsoPrimVolDesc};
 | 
			
		||||
use fd::IsoFD;
 | 
			
		||||
 | 
			
		||||
use alloc::sync::Arc;
 | 
			
		||||
 | 
			
		||||
pub async fn get_prim_vol_desc() -> IsoPrimVolDesc {
 | 
			
		||||
    let desc_block = DRIVE
 | 
			
		||||
        .lock()
 | 
			
		||||
 | 
			
		||||
@ -65,5 +65,5 @@ pub extern "C" fn julios_main(multiboot_info_addr: usize) -> ! {
 | 
			
		||||
 | 
			
		||||
async fn get_file() {
 | 
			
		||||
    let fd = fs::iso::open().await;
 | 
			
		||||
    fd.borrow_mut().read(0 as *mut u8, 0);
 | 
			
		||||
    fd.borrow_mut().read(&[], 0).await;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user