mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-22 15:23:23 +00:00
在riscv输出hello world (#466)
增加了以下内容: - SBI驱动 - 把内核的rust工具链升级到2023-08-15版本 - 输出riscv的helloworld - 设置内核是PIC的
This commit is contained in:
@ -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);
|
||||
|
||||
|
@ -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不为空
|
||||
|
Reference in New Issue
Block a user