]> Zhao Yanbai Git Server - minix.git/commit
Lazy FPU
authorTomas Hruby <tom@minix3.org>
Mon, 7 Jun 2010 07:43:17 +0000 (07:43 +0000)
committerTomas Hruby <tom@minix3.org>
Mon, 7 Jun 2010 07:43:17 +0000 (07:43 +0000)
commitcbc9586c133420e7ed80bd87049c65e74026d8fe
tree349a162c019b5b4b080a9770718bace9b01ef60c
parentb641afc78a9c1b02b88a3fd14f653f853ad8cd4e
Lazy FPU

- FPU context is stored only if conflict between 2 FPU users or while
  exporting context of a process to userspace while it is the active
  user of FPU

- FPU has its owner (fpu_owner) which points to the process whose
  state is currently loaded in FPU

- the FPU exception is only turned on when scheduling a process which
  is not the owner of FPU

- FPU state is restored for the process that generated the FPU
  exception. This process runs immediately without letting scheduler
  to pick a new process to resolve the FPU conflict asap, to minimize
  the FPU thrashing and FPU exception hadler execution

- faster all non-FPU-exception kernel entries as FPU state is not
  checked nor saved

- removed MF_USED_FPU flag, only MF_FPU_INITIALIZED remains to signal
  that a process has used FPU in the past
14 files changed:
kernel/arch/i386/arch_system.c
kernel/arch/i386/exception.c
kernel/arch/i386/mpx.S
kernel/arch/i386/sconst.h
kernel/glo.h
kernel/proc.c
kernel/proc.h
kernel/proto.h
kernel/system/do_clear.c
kernel/system/do_exec.c
kernel/system/do_fork.c
kernel/system/do_mcontext.c
kernel/system/do_sigreturn.c
kernel/system/do_sigsend.c