diff --git a/build.rs b/build.rs index 4efa33e..b37f8fe 100644 --- a/build.rs +++ b/build.rs @@ -97,7 +97,7 @@ fn main() { // Write header f.write_all(b" mod gen { - use alloc::BTreeMap; + use alloc::collections::BTreeMap; pub fn gen() -> BTreeMap<&'static [u8], (&'static [u8], bool)> { let mut files: BTreeMap<&'static [u8], (&'static [u8], bool)> = BTreeMap::new(); ").unwrap(); diff --git a/src/context/context.rs b/src/context/context.rs index cc8037a..3a5acad 100644 --- a/src/context/context.rs +++ b/src/context/context.rs @@ -1,6 +1,7 @@ -use alloc::arc::Arc; +use alloc::sync::Arc; use alloc::boxed::Box; -use alloc::{Vec, VecDeque}; +use alloc::vec::Vec; +use alloc::collections::VecDeque; use core::cmp::Ordering; use core::mem; use spin::Mutex; diff --git a/src/context/file.rs b/src/context/file.rs index d9dbf29..9cac672 100644 --- a/src/context/file.rs +++ b/src/context/file.rs @@ -1,6 +1,6 @@ //! File structs -use alloc::arc::Arc; +use alloc::sync::Arc; use event; use spin::RwLock; use scheme::{self, SchemeId}; diff --git a/src/context/list.rs b/src/context/list.rs index d55ee95..463c312 100644 --- a/src/context/list.rs +++ b/src/context/list.rs @@ -1,6 +1,6 @@ -use alloc::arc::Arc; +use alloc::sync::Arc; use alloc::boxed::Box; -use alloc::BTreeMap; +use alloc::collections::BTreeMap; use core::alloc::{GlobalAlloc, Layout}; use core::mem; use core::sync::atomic::Ordering; @@ -35,7 +35,7 @@ impl ContextList { self.map.get(&super::CONTEXT_ID.load(Ordering::SeqCst)) } - pub fn iter(&self) -> ::alloc::btree_map::Iter>> { + pub fn iter(&self) -> ::alloc::collections::btree_map::Iter>> { self.map.iter() } diff --git a/src/context/memory.rs b/src/context/memory.rs index 61c08fc..bef6070 100644 --- a/src/context/memory.rs +++ b/src/context/memory.rs @@ -1,5 +1,5 @@ -use alloc::arc::{Arc, Weak}; -use alloc::VecDeque; +use alloc::sync::{Arc, Weak}; +use alloc::collections::VecDeque; use core::intrinsics; use spin::Mutex; diff --git a/src/context/signal.rs b/src/context/signal.rs index 761d6d2..523cd9f 100644 --- a/src/context/signal.rs +++ b/src/context/signal.rs @@ -1,4 +1,4 @@ -use alloc::arc::Arc; +use alloc::sync::Arc; use core::mem; use context::{contexts, switch, Status, WaitpidKey}; diff --git a/src/context/timeout.rs b/src/context/timeout.rs index b690413..b20d5e6 100644 --- a/src/context/timeout.rs +++ b/src/context/timeout.rs @@ -1,4 +1,4 @@ -use alloc::vec_deque::VecDeque; +use alloc::collections::VecDeque; use spin::{Once, Mutex, MutexGuard}; use event; diff --git a/src/elf.rs b/src/elf.rs index eddd841..debc08d 100644 --- a/src/elf.rs +++ b/src/elf.rs @@ -1,6 +1,6 @@ //! ELF executables -use alloc::String; +use alloc::string::String; use goblin::elf::section_header::SHT_SYMTAB; diff --git a/src/event.rs b/src/event.rs index 06d7cb2..f7cef70 100644 --- a/src/event.rs +++ b/src/event.rs @@ -1,5 +1,5 @@ -use alloc::arc::Arc; -use alloc::BTreeMap; +use alloc::sync::Arc; +use alloc::collections::BTreeMap; use core::sync::atomic::{AtomicUsize, Ordering, ATOMIC_USIZE_INIT}; use spin::{Once, RwLock, RwLockReadGuard, RwLockWriteGuard}; diff --git a/src/lib.rs b/src/lib.rs index 6e7bfdb..21be726 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -15,21 +15,15 @@ #![feature(alloc)] #![feature(allocator_api)] #![feature(asm)] -#![feature(collections)] #![feature(concat_idents)] -#![feature(const_atomic_usize_new)] #![feature(const_fn)] -#![feature(const_max_value)] -#![feature(const_size_of)] #![feature(core_intrinsics)] #![feature(integer_atomics)] #![feature(lang_items)] #![feature(naked_functions)] #![feature(never_type)] -#![feature(panic_implementation)] #![feature(ptr_internals)] #![feature(thread_local)] -#![feature(unique)] #![no_std] pub extern crate x86; diff --git a/src/memory/recycle.rs b/src/memory/recycle.rs index 5b7c159..34e58d7 100644 --- a/src/memory/recycle.rs +++ b/src/memory/recycle.rs @@ -1,7 +1,7 @@ //! Recycle allocator //! Uses freed frames if possible, then uses inner allocator -use alloc::Vec; +use alloc::vec::Vec; use paging::PhysicalAddress; diff --git a/src/panic.rs b/src/panic.rs index 24eb00d..d252226 100644 --- a/src/panic.rs +++ b/src/panic.rs @@ -1,5 +1,6 @@ //! Intrinsics for panic handling +use core::alloc::Layout; use core::panic::PanicInfo; use interrupt; @@ -9,7 +10,7 @@ use interrupt; pub extern "C" fn rust_eh_personality() {} /// Required to handle panics -#[panic_implementation] +#[panic_handler] #[no_mangle] pub extern "C" fn rust_begin_unwind(info: &PanicInfo) -> ! { println!("KERNEL PANIC: {}", info); @@ -24,7 +25,7 @@ pub extern "C" fn rust_begin_unwind(info: &PanicInfo) -> ! { #[lang = "oom"] #[no_mangle] -pub extern fn rust_oom() -> ! { +pub extern fn rust_oom(_layout: Layout) -> ! { panic!("kernel memory allocation failed"); } diff --git a/src/scheme/event.rs b/src/scheme/event.rs index 85b81eb..4990b68 100644 --- a/src/scheme/event.rs +++ b/src/scheme/event.rs @@ -1,4 +1,4 @@ -use alloc::arc::Arc; +use alloc::sync::Arc; use core::{mem, slice}; use event::{EventQueue, EventQueueId, next_queue_id, queues, queues_mut}; diff --git a/src/scheme/initfs.rs b/src/scheme/initfs.rs index 113507e..5e8b162 100644 --- a/src/scheme/initfs.rs +++ b/src/scheme/initfs.rs @@ -1,4 +1,4 @@ -use alloc::BTreeMap; +use alloc::collections::BTreeMap; use core::{cmp, str}; use core::sync::atomic::{AtomicUsize, Ordering}; use spin::RwLock; @@ -10,7 +10,7 @@ use syscall::scheme::Scheme; #[cfg(test)] mod gen { - use alloc::BTreeMap; + use alloc::collections::BTreeMap; pub fn gen() -> BTreeMap<&'static [u8], (&'static [u8], bool)> { BTreeMap::new() } } diff --git a/src/scheme/live.rs b/src/scheme/live.rs index f753e2b..4352e93 100644 --- a/src/scheme/live.rs +++ b/src/scheme/live.rs @@ -1,7 +1,7 @@ /// Disk scheme replacement when making live disk -use alloc::arc::Arc; -use alloc::BTreeMap; +use alloc::sync::Arc; +use alloc::collections::BTreeMap; use core::{cmp, slice}; use core::sync::atomic::{AtomicUsize, Ordering}; use spin::RwLock; diff --git a/src/scheme/memory.rs b/src/scheme/memory.rs index 32bbcca..6826c2e 100644 --- a/src/scheme/memory.rs +++ b/src/scheme/memory.rs @@ -1,4 +1,5 @@ -use alloc::{BTreeMap, Vec}; +use alloc::collections::BTreeMap; +use alloc::vec::Vec; use core::sync::atomic::{AtomicUsize, Ordering}; use memory::{free_frames, used_frames}; use spin::Mutex; diff --git a/src/scheme/mod.rs b/src/scheme/mod.rs index dc49e67..882ea78 100644 --- a/src/scheme/mod.rs +++ b/src/scheme/mod.rs @@ -6,9 +6,9 @@ //! The kernel validates paths and file descriptors before they are passed to schemes, //! also stripping the scheme identifier of paths if necessary. -use alloc::arc::Arc; +use alloc::sync::Arc; use alloc::boxed::Box; -use alloc::BTreeMap; +use alloc::collections::BTreeMap; use core::sync::atomic::AtomicUsize; use spin::{Once, RwLock, RwLockReadGuard, RwLockWriteGuard}; @@ -74,7 +74,7 @@ pub const ATOMIC_SCHEMEID_INIT: AtomicSchemeId = AtomicSchemeId::default(); int_like!(FileHandle, AtomicFileHandle, usize, AtomicUsize); pub struct SchemeIter<'a> { - inner: Option<::alloc::btree_map::Iter<'a, Box<[u8]>, SchemeId>> + inner: Option<::alloc::collections::btree_map::Iter<'a, Box<[u8]>, SchemeId>> } impl<'a> Iterator for SchemeIter<'a> { @@ -171,7 +171,7 @@ impl SchemeList { Ok(to) } - pub fn iter(&self) -> ::alloc::btree_map::Iter>> { + pub fn iter(&self) -> ::alloc::collections::btree_map::Iter>> { self.map.iter() } diff --git a/src/scheme/pipe.rs b/src/scheme/pipe.rs index 3112abc..80451d0 100644 --- a/src/scheme/pipe.rs +++ b/src/scheme/pipe.rs @@ -1,5 +1,5 @@ -use alloc::arc::{Arc, Weak}; -use alloc::{BTreeMap, VecDeque}; +use alloc::sync::{Arc, Weak}; +use alloc::collections::{BTreeMap, VecDeque}; use core::sync::atomic::{AtomicUsize, ATOMIC_USIZE_INIT, Ordering}; use spin::{Mutex, Once, RwLock, RwLockReadGuard, RwLockWriteGuard}; diff --git a/src/scheme/root.rs b/src/scheme/root.rs index e8c4270..14cdfa6 100644 --- a/src/scheme/root.rs +++ b/src/scheme/root.rs @@ -1,6 +1,7 @@ -use alloc::arc::Arc; +use alloc::sync::Arc; use alloc::boxed::Box; -use alloc::{BTreeMap, Vec}; +use alloc::collections::BTreeMap; +use alloc::vec::Vec; use core::str; use core::sync::atomic::{AtomicUsize, Ordering}; use spin::{Mutex, RwLock}; diff --git a/src/scheme/sys/context.rs b/src/scheme/sys/context.rs index af4e921..c83a9f0 100644 --- a/src/scheme/sys/context.rs +++ b/src/scheme/sys/context.rs @@ -1,4 +1,5 @@ -use alloc::{String, Vec}; +use alloc::string::String; +use alloc::vec::Vec; use core::str; use context; diff --git a/src/scheme/sys/cpu.rs b/src/scheme/sys/cpu.rs index 7201408..c099b97 100644 --- a/src/scheme/sys/cpu.rs +++ b/src/scheme/sys/cpu.rs @@ -1,4 +1,4 @@ -use alloc::Vec; +use alloc::vec::Vec; use device::cpu::cpu_info; use syscall::error::{Error, EIO, Result}; diff --git a/src/scheme/sys/exe.rs b/src/scheme/sys/exe.rs index 87cb0d6..b5d5993 100644 --- a/src/scheme/sys/exe.rs +++ b/src/scheme/sys/exe.rs @@ -1,4 +1,4 @@ -use alloc::Vec; +use alloc::vec::Vec; use context; use syscall::error::{Error, ESRCH, Result}; diff --git a/src/scheme/sys/iostat.rs b/src/scheme/sys/iostat.rs index 92bf3b1..0fddad8 100644 --- a/src/scheme/sys/iostat.rs +++ b/src/scheme/sys/iostat.rs @@ -1,4 +1,5 @@ -use alloc::{String, Vec}; +use alloc::string::String; +use alloc::vec::Vec; use core::fmt::Write; use core::str; diff --git a/src/scheme/sys/mod.rs b/src/scheme/sys/mod.rs index a98d1ba..85ccab2 100644 --- a/src/scheme/sys/mod.rs +++ b/src/scheme/sys/mod.rs @@ -1,5 +1,6 @@ use alloc::boxed::Box; -use alloc::{BTreeMap, Vec}; +use alloc::collections::BTreeMap; +use alloc::vec::Vec; use core::{cmp, str}; use core::sync::atomic::{AtomicUsize, Ordering}; use spin::RwLock; diff --git a/src/scheme/sys/scheme.rs b/src/scheme/sys/scheme.rs index 226327e..268ee7c 100644 --- a/src/scheme/sys/scheme.rs +++ b/src/scheme/sys/scheme.rs @@ -1,4 +1,4 @@ -use alloc::Vec; +use alloc::vec::Vec; use context; use scheme; diff --git a/src/scheme/sys/scheme_num.rs b/src/scheme/sys/scheme_num.rs index f2a3a21..ba05666 100644 --- a/src/scheme/sys/scheme_num.rs +++ b/src/scheme/sys/scheme_num.rs @@ -1,4 +1,4 @@ -use alloc::Vec; +use alloc::vec::Vec; use context; use scheme; diff --git a/src/scheme/sys/syscall.rs b/src/scheme/sys/syscall.rs index 8271829..22da6dd 100644 --- a/src/scheme/sys/syscall.rs +++ b/src/scheme/sys/syscall.rs @@ -1,4 +1,5 @@ -use alloc::{String, Vec}; +use alloc::string::String; +use alloc::vec::Vec; use core::fmt::Write; use core::str; diff --git a/src/scheme/sys/uname.rs b/src/scheme/sys/uname.rs index 7160671..fbe0e79 100644 --- a/src/scheme/sys/uname.rs +++ b/src/scheme/sys/uname.rs @@ -1,4 +1,4 @@ -use alloc::Vec; +use alloc::vec::Vec; use syscall::error::Result; pub fn resource() -> Result> { diff --git a/src/scheme/time.rs b/src/scheme/time.rs index a7f9180..7ec3a18 100644 --- a/src/scheme/time.rs +++ b/src/scheme/time.rs @@ -1,4 +1,4 @@ -use alloc::BTreeMap; +use alloc::collections::BTreeMap; use core::{mem, slice, str}; use core::sync::atomic::{AtomicUsize, Ordering}; use spin::RwLock; diff --git a/src/scheme/user.rs b/src/scheme/user.rs index a24460d..f894d8e 100644 --- a/src/scheme/user.rs +++ b/src/scheme/user.rs @@ -1,6 +1,6 @@ -use alloc::arc::{Arc, Weak}; +use alloc::sync::{Arc, Weak}; use alloc::boxed::Box; -use alloc::BTreeMap; +use alloc::collections::BTreeMap; use core::sync::atomic::{AtomicU64, Ordering}; use core::{mem, slice, usize}; use spin::{Mutex, RwLock}; diff --git a/src/sync/wait_condition.rs b/src/sync/wait_condition.rs index 37e33aa..c9d22df 100644 --- a/src/sync/wait_condition.rs +++ b/src/sync/wait_condition.rs @@ -1,5 +1,5 @@ -use alloc::arc::Arc; -use alloc::Vec; +use alloc::sync::Arc; +use alloc::vec::Vec; use spin::{Mutex, RwLock}; use context::{self, Context}; diff --git a/src/sync/wait_map.rs b/src/sync/wait_map.rs index 37acdb9..45c692a 100644 --- a/src/sync/wait_map.rs +++ b/src/sync/wait_map.rs @@ -1,4 +1,4 @@ -use alloc::BTreeMap; +use alloc::collections::BTreeMap; use core::mem; use spin::Mutex; diff --git a/src/sync/wait_queue.rs b/src/sync/wait_queue.rs index a3c5ded..384a125 100644 --- a/src/sync/wait_queue.rs +++ b/src/sync/wait_queue.rs @@ -1,4 +1,4 @@ -use alloc::vec_deque::VecDeque; +use alloc::collections::VecDeque; use spin::Mutex; use sync::WaitCondition; diff --git a/src/syscall/debug.rs b/src/syscall/debug.rs index d5ad809..bad8d89 100644 --- a/src/syscall/debug.rs +++ b/src/syscall/debug.rs @@ -1,6 +1,7 @@ use core::mem; use core::ops::Range; -use alloc::{String, Vec}; +use alloc::string::String; +use alloc::vec::Vec; use super::data::{Stat, TimeSpec}; use super::flag::*; diff --git a/src/syscall/fs.rs b/src/syscall/fs.rs index 6629133..437c434 100644 --- a/src/syscall/fs.rs +++ b/src/syscall/fs.rs @@ -1,6 +1,6 @@ //! Filesystem syscalls use core::sync::atomic::Ordering; -use alloc::arc::Arc; +use alloc::sync::Arc; use spin::RwLock; use context; diff --git a/src/syscall/futex.rs b/src/syscall/futex.rs index a05e8a7..193c3b4 100644 --- a/src/syscall/futex.rs +++ b/src/syscall/futex.rs @@ -2,8 +2,8 @@ //! Futex or Fast Userspace Mutex is "a method for waiting until a certain condition becomes true." //! //! For more information about futexes, please read [this](https://eli.thegreenplace.net/2018/basics-of-futexes/) blog post, and the [futex(2)](http://man7.org/linux/man-pages/man2/futex.2.html) man page -use alloc::arc::Arc; -use alloc::VecDeque; +use alloc::sync::Arc; +use alloc::collections::VecDeque; use core::intrinsics; use spin::{Once, RwLock, RwLockReadGuard, RwLockWriteGuard}; diff --git a/src/syscall/privilege.rs b/src/syscall/privilege.rs index 5a47cc3..386158f 100644 --- a/src/syscall/privilege.rs +++ b/src/syscall/privilege.rs @@ -1,4 +1,4 @@ -use alloc::Vec; +use alloc::vec::Vec; use context; use scheme::{self, SchemeNamespace}; diff --git a/src/syscall/process.rs b/src/syscall/process.rs index 3e62fa5..110264b 100644 --- a/src/syscall/process.rs +++ b/src/syscall/process.rs @@ -1,4 +1,4 @@ -use alloc::arc::Arc; +use alloc::sync::Arc; use alloc::boxed::Box; use alloc::vec::Vec; use core::alloc::{GlobalAlloc, Layout};