From cbf40e0f6a4ee8fde77e05f8b74ca4b989937d38 Mon Sep 17 00:00:00 2001 From: Artur Grabowski Date: Fri, 18 Jul 2008 23:43:32 +0000 Subject: Add a macro that clears the want_resched flag that need_resched sets. Right now when mi_switch picks up the same proc, we didn't clear the flag which would mean that every time we service an AST we would attempt a context switch. For some architectures, amd64 being probably the most extreme, that meant attempting to context switch for every trap and interrupt. Now we clear_resched explicitly after every context switch, even if it didn't do anything. Which also allows us to remove some more code in cpu_switchto (not done yet). miod@ ok --- sys/arch/alpha/include/cpu.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sys/arch/alpha/include/cpu.h') diff --git a/sys/arch/alpha/include/cpu.h b/sys/arch/alpha/include/cpu.h index 5937dbdd0d4..9e393ffc3d6 100644 --- a/sys/arch/alpha/include/cpu.h +++ b/sys/arch/alpha/include/cpu.h @@ -1,4 +1,4 @@ -/* $OpenBSD: cpu.h,v 1.32 2008/06/26 05:42:08 ray Exp $ */ +/* $OpenBSD: cpu.h,v 1.33 2008/07/18 23:43:31 art Exp $ */ /* $NetBSD: cpu.h,v 1.45 2000/08/21 02:03:12 thorpej Exp $ */ /*- @@ -282,12 +282,14 @@ do { \ ci->ci_want_resched = 1; \ aston(curcpu()); \ } while (/*CONSTCOND*/0) +#define clear_resched(ci) (ci)->ci_want_resched = 0 #else #define need_resched(ci) \ do { \ curcpu()->ci_want_resched = 1; \ aston(curcpu()); \ } while (/*CONSTCOND*/0) +#define clear_resched(ci) curcpu()->ci_want_resched = 0 #endif /* -- cgit v1.2.3