Kernel: Add a blunt big process lock.

We can't have multiple threads in the same process running in the kernel
at the same time, so let's have a per-process lock that threads have to
acquire on syscall entry/exit (and yield while blocked.)
This commit is contained in:
Andreas Kling 2019-04-01 20:02:05 +02:00
commit d5a9f4596b
Notes: sideshowbarker 2024-07-19 14:51:36 +09:00
5 changed files with 37 additions and 0 deletions

View file

@ -252,10 +252,12 @@ static dword handle(RegisterDump& regs, dword function, dword arg1, dword arg2,
void syscall_trap_entry(RegisterDump& regs)
{
current->process().big_lock().lock();
dword function = regs.eax;
dword arg1 = regs.edx;
dword arg2 = regs.ecx;
dword arg3 = regs.ebx;
regs.eax = Syscall::handle(regs, function, arg1, arg2, arg3);
current->process().big_lock().unlock();
}