rCore_tutorial_doc icon indicating copy to clipboard operation
rCore_tutorial_doc copied to clipboard

内核线程初始化 · GitBook

Open chyyuu opened this issue 5 years ago • 2 comments

https://rcore-os.github.io/rCore_tutorial_doc/chapter6/part3.html

chyyuu avatar Dec 10 '19 16:12 chyyuu

倒数第二个代码块上方的公式角标好像没有用大括号括起来。

function2-llx avatar Mar 06 '20 09:03 function2-llx

__trapret 仅仅是利用它来设置寄存器的初始值

有一点不解,这里我理解其实实际上__trapret恢复了所有寄存器还有几个CSR,但实际上并不需要恢复所有的寄存器,只需要恢复设置的下面代码块涉及的寄存器就可以了:

                let mut tf: TrapFrame = unsafe { zeroed() };
                tf.x[2] = kstack_top;
                tf.sepc = entry;
                tf.sstatus = sstatus::read();
                tf.sstatus.set_spp(sstatus::SPP::Supervisor);
                tf.sstatus.set_spie(true);
                tf.sstatus.set_sie(false);
                tf

所以作者使用__trapret是为了方便起见,直接恢复整个中断帧,虽然多恢复了一些,但这样可以直接借用,而不需要重新写一段了,我的理解正确吗?

moon548834 avatar Mar 31 '20 03:03 moon548834