1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-22 08:06:17 +04:00

Merge pull request #44 from rcore-os/update-nightly

Update Rust nightly to 2020-04-06
This commit is contained in:
Chen 2020-04-06 20:09:26 +08:00 committed by GitHub
commit f9bfd157b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 11 additions and 161 deletions

View File

@ -7,11 +7,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: rm rust-toolchain
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
toolchain: nightly-2020-04-06
override: true
components: rustfmt, clippy
- name: Check code format
@ -30,7 +29,7 @@ jobs:
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly-2020-03-23
toolchain: nightly-2020-04-06
components: rust-src, llvm-tools-preview
- name: Cache QEMU

12
kernel/Cargo.lock generated
View File

@ -107,7 +107,7 @@ dependencies = [
[[package]]
name = "buddy_system_allocator"
version = "0.3.8"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"rustversion 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -331,7 +331,7 @@ name = "rboot"
version = "0.1.2"
dependencies = [
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"uefi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
"uefi 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
"x86_64 0.9.6 (registry+https://github.com/rust-lang/crates.io-index)",
"xmas-elf 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@ -349,7 +349,7 @@ dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"bitmap-allocator 0.1.0 (git+https://github.com/rcore-os/bitmap-allocator)",
"bitvec 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)",
"buddy_system_allocator 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
"buddy_system_allocator 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
"cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
"compression 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"device_tree 1.0.3 (git+https://github.com/rcore-os/device_tree-rs)",
@ -580,7 +580,7 @@ dependencies = [
[[package]]
name = "uefi"
version = "0.4.3"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -728,7 +728,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
"checksum bitmap-allocator 0.1.0 (git+https://github.com/rcore-os/bitmap-allocator)" = "<none>"
"checksum bitvec 0.17.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1fe4300c1d7a9ea6f3e3f39c10b39862bb79e1175c0572b6b49539a30e5562f5"
"checksum buddy_system_allocator 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "09072aa89a810228c822e132e4639ff17bab014ba5b2dce5270a6331ff1963ca"
"checksum buddy_system_allocator 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9e953b958d83e13a44b1ead5b6aaa2a5f854bd5170239a66b606e030a14d018f"
"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
"checksum cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0"
"checksum cc 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
@ -780,7 +780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
"checksum typenum 1.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"
"checksum uart_16550 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "58fc0bc8ff1beb1436e8c4ce9c4b47f6f6c1376b56fb91505fabeef13743eb33"
"checksum ucs2 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "85061f4e43545a613c0da6b87725bf23f8da8613cf2473719c4f71a270c4ce8a"
"checksum uefi 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "36c63ddfef80d9e7f1318917f6c05135b3b98027e973a9e9f0a6aebe87b95934"
"checksum uefi 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5cec6a2850639f588cc8042140b5deaa2f2170c23db5adb08f4316fa04cdb4a0"
"checksum uefi-macros 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c7d4a1b0215dc72e83d8d501b3275eb59477d3b595be8861abfb8ab110180955"
"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
"checksum usize_conversions 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f70329e2cbe45d6c97a5112daad40c34cd9a4e18edb5a2a18fefeb584d8d25e5"

View File

@ -55,7 +55,7 @@ bitflags = "1.2"
bit_field = "0.10"
volatile = "0.2"
bitvec = { version = "0.17", default-features = false, features = ["alloc"] }
buddy_system_allocator = "0.3"
buddy_system_allocator = "0.3.9"
pci = { git = "https://github.com/rcore-os/pci-rs" }
device_tree = { git = "https://github.com/rcore-os/device_tree-rs" }
isomorphic_drivers = { git = "https://github.com/rcore-os/isomorphic_drivers", features = ["log"] }

View File

@ -17,9 +17,6 @@
//! 完全照搬`std::sync::Semaphore`std中已经废弃。
//! 貌似在Rust中并不常用一般都用`Mutex`。
//!
//! * `mpsc`: 消息传递通道。
//! 多生产者-单消费者的FIFO队列。用于在线程间传递数据。
//!
//! * `test`: 测试。
//! 目前分别用`Mutex`和`Condvar`(Monitor)实现了哲学家就餐问题。
//!
@ -55,7 +52,6 @@ pub use self::mutex::*;
pub use self::semaphore::*;
mod condvar;
pub mod mpsc;
mod mutex;
mod semaphore;
pub mod test;

View File

@ -1,145 +0,0 @@
use super::Condvar;
use super::SpinLock as Mutex;
use alloc::{collections::VecDeque, sync::Arc, sync::Weak};
struct Channel<T> {
deque: Mutex<VecDeque<T>>,
pushed: Condvar,
}
impl<T> Default for Channel<T> {
fn default() -> Self {
Channel {
deque: Mutex::<_>::default(),
pushed: Condvar::default(),
}
}
}
/// The receiving half of Rust's channel (or sync_channel) type.
/// This half can only be owned by one thread.
///
/// Messages sent to the channel can be retrieved using recv.
pub struct Receiver<T> {
inner: Arc<Channel<T>>,
}
unsafe impl<T: Send> Send for Receiver<T> {}
impl<T> !Sync for Receiver<T> {}
#[derive(Debug)]
pub struct RecvError;
impl<T> Receiver<T> {
/// Attempts to wait for a value on this receiver,
/// returning an error if the corresponding channel has hung up.
pub fn recv(&self) -> Result<T, RecvError> {
let mut deque = self.inner.deque.lock();
while deque.is_empty() {
deque = self.inner.pushed.wait(deque);
}
Ok(deque.pop_front().unwrap())
}
}
/// The sending-half of Rust's asynchronous channel type.
/// This half can only be owned by one thread, but it can be cloned to send to other threads.
///
/// Messages can be sent through this channel with send.
#[derive(Clone)]
pub struct Sender<T> {
inner: Weak<Channel<T>>,
}
unsafe impl<T: Send> Send for Sender<T> {}
impl<T> !Sync for Sender<T> {}
#[derive(Debug)]
pub struct SendError<T>(pub T);
impl<T> Sender<T> {
/// Attempts to send a value on this channel,
/// returning it back if it could not be sent.
pub fn send(&self, t: T) -> Result<(), SendError<T>> {
match self.inner.upgrade() {
None => Err(SendError(t)),
Some(inner) => {
let mut deque = inner.deque.lock();
deque.push_back(t);
inner.pushed.notify_one();
Ok(())
}
}
}
}
/// Creates a new asynchronous channel, returning the sender/receiver halves.
pub fn channel<T>() -> (Sender<T>, Receiver<T>) {
let channel = Arc::new(Channel::<T>::default());
let sender = Sender {
inner: Arc::downgrade(&channel),
};
let receiver = Receiver { inner: channel };
(sender, receiver)
}
pub mod test {
//! Copied from std::mpsc::test
use super::*;
use crate::thread;
use alloc::boxed::Box;
fn smoke() {
let (tx, rx) = channel::<i32>();
tx.send(1).unwrap();
assert_eq!(rx.recv().unwrap(), 1);
}
fn drop_full() {
let (tx, _rx) = channel::<Box<isize>>();
tx.send(Box::new(1)).unwrap();
}
fn drop_full_shared() {
let (tx, _rx) = channel::<Box<isize>>();
drop(tx.clone());
drop(tx.clone());
tx.send(Box::new(1)).unwrap();
}
fn smoke_shared() {
let (tx, rx) = channel::<i32>();
tx.send(1).unwrap();
assert_eq!(rx.recv().unwrap(), 1);
let tx = tx.clone();
tx.send(1).unwrap();
assert_eq!(rx.recv().unwrap(), 1);
}
fn smoke_threads() {
let (tx, rx) = channel::<i32>();
let _t = thread::spawn(move || {
tx.send(1).unwrap();
});
assert_eq!(rx.recv().unwrap(), 1);
}
fn smoke_port_gone() {
let (tx, rx) = channel::<i32>();
drop(rx);
assert!(tx.send(1).is_err());
}
pub fn test_all() {
smoke();
drop_full();
drop_full_shared();
smoke_shared();
smoke_threads();
smoke_port_gone();
println!("mpsc test end");
}
}

2
rboot

@ -1 +1 @@
Subproject commit 33a2d215957b704a26dab52484d75d47dbb49bdb
Subproject commit 048fa09b6b9614ceee52f8d7a8e4587ae3ca61e8

View File

@ -1 +1 @@
nightly-2020-03-23
nightly-2020-04-06