mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-15 12:23:15 +00:00
Kernel: Shrink Thread by making kernel resume TSS heap-allocated.
This commit is contained in:
parent
c9b86be1cc
commit
b2ebf6c798
|
@ -694,7 +694,8 @@ void Process::sys$sigreturn()
|
|||
{
|
||||
InterruptDisabler disabler;
|
||||
Scheduler::prepare_to_modify_tss(*current);
|
||||
current->m_tss = current->m_tss_to_resume_kernel;
|
||||
current->m_tss = *current->m_tss_to_resume_kernel;
|
||||
current->m_tss_to_resume_kernel.clear();
|
||||
#ifdef SIGNAL_DEBUG
|
||||
kprintf("sys$sigreturn in %s(%u)\n", name().characters(), pid());
|
||||
auto& tss = current->tss();
|
||||
|
|
|
@ -347,9 +347,9 @@ ShouldUnblockThread Thread::dispatch_signal(byte signal)
|
|||
kprintf("dispatch_signal to %s(%u) in state=%s with return to %w:%x\n", name().characters(), pid(), to_string(state()), ret_cs, ret_eip);
|
||||
#endif
|
||||
ASSERT(is_blocked());
|
||||
m_tss_to_resume_kernel = m_tss;
|
||||
m_tss_to_resume_kernel = make<TSS32>(m_tss);
|
||||
#ifdef SIGNAL_DEBUG
|
||||
kprintf("resume tss pc: %w:%x stack: %w:%x flags: %x cr3: %x\n", m_tss_to_resume_kernel.cs, m_tss_to_resume_kernel.eip, m_tss_to_resume_kernel.ss, m_tss_to_resume_kernel.esp, m_tss_to_resume_kernel.eflags, m_tss_to_resume_kernel.cr3);
|
||||
kprintf("resume tss pc: %w:%x stack: %w:%x flags: %x cr3: %x\n", m_tss_to_resume_kernel.cs, m_tss_to_resume_kernel->eip, m_tss_to_resume_kernel->ss, m_tss_to_resume_kernel->esp, m_tss_to_resume_kernel->eflags, m_tss_to_resume_kernel->cr3);
|
||||
#endif
|
||||
|
||||
if (!m_signal_stack_user_region) {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <Kernel/UnixTypes.h>
|
||||
#include <AK/AKString.h>
|
||||
#include <AK/InlineLinkedList.h>
|
||||
#include <AK/OwnPtr.h>
|
||||
#include <AK/RetainPtr.h>
|
||||
#include <AK/Vector.h>
|
||||
|
||||
|
@ -138,7 +139,7 @@ private:
|
|||
Process& m_process;
|
||||
int m_tid { -1 };
|
||||
TSS32 m_tss;
|
||||
TSS32 m_tss_to_resume_kernel;
|
||||
OwnPtr<TSS32> m_tss_to_resume_kernel;
|
||||
FarPtr m_far_ptr;
|
||||
dword m_ticks { 0 };
|
||||
dword m_ticks_left { 0 };
|
||||
|
|
Loading…
Reference in a new issue