在riscv输出hello world (#466)

增加了以下内容:
- SBI驱动
- 把内核的rust工具链升级到2023-08-15版本
- 输出riscv的helloworld
- 设置内核是PIC的
This commit is contained in:
LoGin
2023-12-07 02:13:22 +08:00
committed by GitHub
parent fca83acef4
commit 1a72a751b1
41 changed files with 722 additions and 122 deletions

View File

@ -423,17 +423,8 @@ impl SigPending {
/// @brief 从sigpending中删除mask中被置位的信号。也就是说比如mask的第1位被置为1,那么就从sigqueue中删除所有signum为2的信号的信息。
pub fn flush_by_mask(&mut self, mask: &SigSet) {
// 定义过滤器从sigqueue中删除mask中被置位的信号
let filter = |x: &mut SigInfo| {
if mask.contains(SigSet::from_bits_truncate(x.sig_no as u64)) {
return true;
}
return false;
};
let filter_result: Vec<SigInfo> = self.queue.q.drain_filter(filter).collect();
// 回收这些siginfo
for x in filter_result {
drop(x)
}
let filter = |x: &SigInfo| !mask.contains(SigSet::from_bits_truncate(x.sig_no as u64));
self.queue.q.retain(filter);
}
}
@ -496,7 +487,7 @@ impl SigQueue {
return false;
};
// 从sigqueue中过滤出结果
let mut filter_result: Vec<SigInfo> = self.q.drain_filter(filter).collect();
let mut filter_result: Vec<SigInfo> = self.q.extract_if(filter).collect();
// 筛选出的结果不能大于1个
assert!(filter_result.len() <= 1);

View File

@ -105,7 +105,7 @@ impl Syscall {
) -> Result<usize, SystemError> {
// 请注意用户态传进来的user_sigaction结构体类型请注意这个结构体与内核实际的不一样
let act: *mut UserSigaction = new_act as *mut UserSigaction;
let mut old_act = old_act as *mut UserSigaction;
let old_act = old_act as *mut UserSigaction;
let mut new_ka: Sigaction = Default::default();
let mut old_sigaction: Sigaction = Default::default();
// 如果传入的新的sigaction不为空