完善Tty的RawMode (#577)

* 完善rowmode,改掉一部分bug

* 增加两个ansi拓展功能功能,以及标记部分函数nerve inline

* 修改do_signal和其他中断上下文锁未关中断,以及拓展tty功能,修改tty几个算法bug

* 修改两个锁

* 修改syscall_64

* update
This commit is contained in:
GnoCiYeH
2024-03-11 15:13:37 +08:00
committed by GitHub
parent 840045af94
commit 52bcb59e92
22 changed files with 561 additions and 290 deletions

View File

@ -327,6 +327,7 @@ ENTRY(ignore_int)
ENTRY(syscall_64)
//
cli
swapgs
movq %rsp, %gs:0x8
movq %gs:0x0, %rsp
@ -372,10 +373,12 @@ ENTRY(syscall_64)
movq %rsp, %rdi // rdi
sti
callq *%rdx //
// do_signal
movq %rsp, %rdi
callq do_signal
cli

View File

@ -415,7 +415,8 @@ pub struct X86_64SignalArch;
impl SignalArch for X86_64SignalArch {
unsafe fn do_signal(frame: &mut TrapFrame) {
let pcb = ProcessManager::current_pcb();
let siginfo = pcb.try_siginfo(5);
let siginfo = pcb.try_siginfo_irqsave(5);
if unlikely(siginfo.is_none()) {
return;
@ -437,7 +438,7 @@ impl SignalArch for X86_64SignalArch {
let sig_block: SigSet = siginfo_read_guard.sig_block().clone();
drop(siginfo_read_guard);
let sig_guard = pcb.try_sig_struct_irq(5);
let sig_guard = pcb.try_sig_struct_irqsave(5);
if unlikely(sig_guard.is_none()) {
return;
}