]> Zhao Yanbai Git Server - minix.git/commit
Early address space switch
authorTomas Hruby <tom@minix3.org>
Tue, 9 Feb 2010 15:13:52 +0000 (15:13 +0000)
committerTomas Hruby <tom@minix3.org>
Tue, 9 Feb 2010 15:13:52 +0000 (15:13 +0000)
commitad9ba944d10d6c068a1af6aecd1f0afea875ae1c
treef410c4606e55a0aaf34d7c10d9d9cc366f3b7cdf
parentb14a86ca5cf0f5a30204aa14897e785ed6f4b5f1
Early address space switch

- switch_address_space() implements a switch of the user address space
  for the destination process

- this makes memory of this process easily accessible, e.g. a pointer
  valid in the userspace can be used with a little complexity to
  access the process's memory

- the switch does not happed only just before we return to userspace,
  however, it happens right after we know which process we are going
  to schedule. This happens before we start processing the misc flags
  of this process so its memory is available

- if the process becomes not runnable while processing the mics flags
  we pick a new process and we switch the address space again which
  introduces possibly a little bit more overhead, however, it is
  hopefully hidden by reducing the overheads when we actually access
  the memory
kernel/arch/i386/klib386.S
kernel/arch/i386/mpx386.S
kernel/arch/i386/system.c
kernel/proc.c
kernel/proto.h