new: tty设备(尚未与stdio接上) (#202)

This commit is contained in:
login
2023-03-16 19:48:59 +08:00
committed by GitHub
parent 790d457640
commit 0d48c3c9c2
22 changed files with 572 additions and 129 deletions

View File

@ -9,7 +9,8 @@ use crate::{
arch::asm::current::current_pcb,
filesystem::vfs::file::{File, FileDescriptorVec},
include::bindings::bindings::{
process_control_block, CLONE_FS, EBADF, EFAULT, ENFILE, EPERM, PROC_RUNNING, PROC_STOPPED,
process_control_block, CLONE_FS, EBADF, EFAULT, ENFILE, EPERM, PROC_INTERRUPTIBLE,
PROC_RUNNING, PROC_STOPPED, PROC_UNINTERRUPTIBLE,
},
sched::core::{cpu_executing, sched_enqueue},
smp::core::{smp_get_processor_id, smp_send_reschedule},
@ -253,6 +254,22 @@ impl process_control_block {
return Ok(());
}
/// @brief 标记当前pcb已经由其他机制进行管理调度器将不会将他加入队列(且进程可以被信号打断)
/// 当我们要把一个进程,交给其他机制管理时,那么就应该调用本函数。
///
/// 由于本函数可能造成进程不再被调度因此标记为unsafe
pub unsafe fn mark_sleep_interruptible(&mut self){
self.state = PROC_INTERRUPTIBLE as u64;
}
/// @brief 标记当前pcb已经由其他机制进行管理调度器将不会将他加入队列(且进程不可以被信号打断)
/// 当我们要把一个进程,交给其他机制管理时,那么就应该调用本函数
///
/// 由于本函数可能造成进程不再被调度因此标记为unsafe
pub unsafe fn mark_sleep_uninterruptible(&mut self){
self.state = PROC_UNINTERRUPTIBLE as u64;
}
}
// =========== 导出到C的函数在将来进程管理模块被完全重构之后需要删掉他们 BEGIN ============