]> Zhao Yanbai Git Server - minix.git/commit
Changed pagefault delivery to VM
authorTomas Hruby <tom@minix3.org>
Mon, 26 Apr 2010 23:21:26 +0000 (23:21 +0000)
committerTomas Hruby <tom@minix3.org>
Mon, 26 Apr 2010 23:21:26 +0000 (23:21 +0000)
commitf51eea4b327ccad2d9143532288d73ae4dc28e48
tree7c44426723b5a6b6203f8dbd6d0d0310c624fe1e
parenta131085a5bee10224241bfe9b46f85abe983b03f
Changed pagefault delivery to VM

this patch changes the way pagefaults are delivered to VM. It adopts
the same model as the out-of-quantum messages sent by kernel to a
scheduler.

- everytime a userspace pagefault occurs, kernel creates a message
  which is sent to VM on behalf of the faulting process

- the process is blocked on delivery to VM in the standard IPC code
  instead of waiting in a spacial in-kernel queue (stack) and is not
  runnable until VM tell kernel that the pagefault is resolved and is
  free to clear the RTS_PAGEFAULT flag.

- VM does not need call kernel and poll the pagefault information
  which saves many (1/2?) calls and kernel calls that return "no more
  data"

- VM notification by kernel does not need to use signals

- each entry in proc table is by 12 bytes smaller (~3k save)
13 files changed:
include/arch/i386/archtypes.h
include/minix/com.h
include/signal.h
kernel/arch/i386/arch_do_vmctl.c
kernel/arch/i386/exception.c
kernel/glo.h
kernel/proc.h
lib/libsys/sys_vmctl.c
servers/vm/arch/i386/Makefile.inc
servers/vm/arch/i386/arch_pagefaults.c [deleted file]
servers/vm/main.c
servers/vm/pagefaults.c
servers/vm/proto.h