Move the increment of uvmexp.softs back to the caller of mi_ast():
authorguenther <guenther@openbsd.org>
Sun, 11 May 2014 00:12:43 +0000 (00:12 +0000)
committerguenther <guenther@openbsd.org>
Sun, 11 May 2014 00:12:43 +0000 (00:12 +0000)
it needs to be done atomicly on some MP archs and we don't have
atomic_add_int() everywhere yet.  Also, mi_ast() was meant to be inline.

noted by miod@

15 files changed:
sys/arch/alpha/alpha/trap.c
sys/arch/amd64/amd64/trap.c
sys/arch/arm/arm/ast.c
sys/arch/hppa/hppa/trap.c
sys/arch/hppa64/hppa64/trap.c
sys/arch/i386/i386/trap.c
sys/arch/m88k/m88k/trap.c
sys/arch/mips64/mips64/trap.c
sys/arch/powerpc/powerpc/trap.c
sys/arch/sh/sh/trap.c
sys/arch/solbourne/solbourne/trap.c
sys/arch/sparc/sparc/trap.c
sys/arch/sparc64/sparc64/trap.c
sys/arch/vax/vax/trap.c
sys/sys/syscall_mi.h

index 2d7d82b..9d58190 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.73 2014/05/10 05:33:00 guenther Exp $ */
+/* $OpenBSD: trap.c,v 1.74 2014/05/11 00:12:43 guenther Exp $ */
 /* $NetBSD: trap.c,v 1.52 2000/05/24 16:48:33 thorpej Exp $ */
 
 /*-
@@ -720,6 +720,7 @@ ast(framep)
                panic("ast and not user");
 #endif
 
+       atomic_add_int(&uvmexp.softs, 1);
        mi_ast(p, ci->ci_want_resched);
 
        /* Do any deferred user pmap operations. */
index 0ce734d..590f68c 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.38 2014/05/10 05:33:00 guenther Exp $      */
+/*     $OpenBSD: trap.c,v 1.39 2014/05/11 00:12:43 guenther Exp $      */
 /*     $NetBSD: trap.c,v 1.2 2003/05/04 23:51:56 fvdl Exp $    */
 
 /*-
@@ -281,6 +281,7 @@ copyfault:
                goto out;
 
        case T_ASTFLT|T_USER:           /* Allow process switch */
+               uvmexp.softs++;
                mi_ast(p, curcpu()->ci_want_resched);
                goto out;
 
index ea410ec..486d680 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ast.c,v 1.11 2014/05/10 05:33:00 guenther Exp $       */
+/*     $OpenBSD: ast.c,v 1.12 2014/05/11 00:12:44 guenther Exp $       */
 /*     $NetBSD: ast.c,v 1.6 2003/10/31 16:44:34 cl Exp $       */
 
 /*
@@ -90,6 +90,7 @@ ast(struct trapframe *tf)
                panic("ast: no pcb!");
 #endif 
 
+       uvmexp.softs++;
        mi_ast(p, want_resched);
        userret(p);
 }
index 0278efc..72f261b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.133 2014/05/10 21:58:56 deraadt Exp $      */
+/*     $OpenBSD: trap.c,v 1.134 2014/05/11 00:12:44 guenther Exp $     */
 
 /*
  * Copyright (c) 1998-2004 Michael Shalayeff
@@ -139,6 +139,7 @@ ast(struct proc *p)
 {
        if (p->p_md.md_astpending) {
                p->p_md.md_astpending = 0;
+               uvmexp.softs++;
                mi_ast(p, curcpu()->ci_want_resched);
        }
 
index c21b9cc..857268e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.38 2014/05/11 00:05:38 guenther Exp $      */
+/*     $OpenBSD: trap.c,v 1.39 2014/05/11 00:12:44 guenther Exp $      */
 
 /*
  * Copyright (c) 2005 Michael Shalayeff
@@ -132,6 +132,7 @@ ast(struct proc *p)
 {
        if (astpending) {
                astpending = 0;
+               uvmexp.softs++;
                mi_ast(p, want_resched);
        }
 }
index 9ec543f..4454ae0 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.115 2014/05/10 05:33:00 guenther Exp $     */
+/*     $OpenBSD: trap.c,v 1.116 2014/05/11 00:12:44 guenther Exp $     */
 /*     $NetBSD: trap.c,v 1.95 1996/05/05 06:50:02 mycroft Exp $        */
 
 /*-
@@ -334,6 +334,7 @@ trap(struct trapframe *frame)
                goto out;
 
        case T_ASTFLT|T_USER:           /* Allow process switch */
+               uvmexp.softs++;
                mi_ast(p, want_resched);
                goto out;
 
index 5426eea..8054055 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.92 2014/05/10 05:33:00 guenther Exp $      */
+/*     $OpenBSD: trap.c,v 1.93 2014/05/11 00:12:44 guenther Exp $      */
 /*
  * Copyright (c) 2004, Miodrag Vallat.
  * Copyright (c) 1998 Steve Murphree, Jr.
@@ -207,6 +207,7 @@ ast(struct trapframe *frame)
 
        p->p_md.md_astpending = 0;
 
+       uvmexp.softs++;
        mi_ast(p, ci->ci_want_resched);
        userret(p);
 }
index d7c4e16..51f50ad 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.96 2014/05/11 00:05:38 guenther Exp $      */
+/*     $OpenBSD: trap.c,v 1.97 2014/05/11 00:12:44 guenther Exp $      */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -150,6 +150,7 @@ ast()
 
        p->p_md.md_astpending = 0;
 
+       atomic_add_int(&uvmexp.softs, 1);
        mi_ast(p, ci->ci_want_resched);
        userret(p);
 }
index 2624c53..3d0bebb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.99 2014/05/10 16:48:36 deraadt Exp $       */
+/*     $OpenBSD: trap.c,v 1.100 2014/05/11 00:12:44 guenther Exp $     */
 /*     $NetBSD: trap.c,v 1.3 1996/10/13 03:31:37 christos Exp $        */
 
 /*
@@ -620,6 +620,7 @@ for (i = 0; i < errnum; i++) {
 
        case EXC_AST|EXC_USER:
                p->p_md.md_astpending = 0;      /* we are about to do it */
+               uvmexp.softs++;
                mi_ast(p, ci->ci_want_resched);
                break;
        }
index 24a075f..b6a6753 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.28 2014/05/10 16:56:23 deraadt Exp $       */
+/*     $OpenBSD: trap.c,v 1.29 2014/05/11 00:12:44 guenther Exp $      */
 /*     $NetBSD: exception.c,v 1.32 2006/09/04 23:57:52 uwe Exp $       */
 /*     $NetBSD: syscall.c,v 1.6 2006/03/07 07:21:50 thorpej Exp $      */
 
@@ -479,6 +479,7 @@ ast(struct proc *p, struct trapframe *tf)
        while (p->p_md.md_astpending) {
                p->p_md.md_astpending = 0;
                refreshcreds(p);
+               uvmexp.softs++;
                mi_ast(p, want_resched);
                userret(p);
        }
index 76ac5f7..d50588d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.20 2014/05/10 05:33:00 guenther Exp $      */
+/*     $OpenBSD: trap.c,v 1.21 2014/05/11 00:12:44 guenther Exp $      */
 /*     OpenBSD: trap.c,v 1.42 2004/12/06 20:12:25 miod Exp     */
 
 /*
@@ -308,6 +308,7 @@ trap(type, psr, pc, tf)
 
        case T_AST:
                want_ast = 0;
+               uvmexp.softs++;
                mi_ast(p, want_resched);
                break;
 
index 5f15e83..dbbb324 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.67 2014/05/10 05:33:00 guenther Exp $      */
+/*     $OpenBSD: trap.c,v 1.68 2014/05/11 00:12:44 guenther Exp $      */
 /*     $NetBSD: trap.c,v 1.58 1997/09/12 08:55:01 pk Exp $ */
 
 /*
@@ -301,6 +301,7 @@ trap(type, psr, pc, tf)
 
        case T_AST:
                want_ast = 0;
+               uvmexp.softs++;
                mi_ast(p, want_resched);
                break;
 
index 990dac1..70a3411 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.83 2014/05/10 12:29:58 kettenis Exp $      */
+/*     $OpenBSD: trap.c,v 1.84 2014/05/11 00:12:44 guenther Exp $      */
 /*     $NetBSD: trap.c,v 1.73 2001/08/09 01:03:01 eeh Exp $ */
 
 /*
@@ -452,6 +452,7 @@ dopanic:
 
        case T_AST:
                p->p_md.md_astpending = 0;
+               uvmexp.softs++;
                mi_ast(p, curcpu()->ci_want_resched);
                break;
 
index 842234f..bc6f28b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: trap.c,v 1.52 2014/05/10 05:33:00 guenther Exp $     */
+/*     $OpenBSD: trap.c,v 1.53 2014/05/11 00:12:44 guenther Exp $     */
 /*     $NetBSD: trap.c,v 1.47 1999/08/21 19:26:20 matt Exp $     */
 /*
  * Copyright (c) 1994 Ludd, University of Lule}, Sweden.
@@ -253,6 +253,7 @@ if(faultdebug)printf("trap accflt type %lx, code %lx, pc %lx, psl %lx\n",
        case T_ASTFLT|T_USER:
                mtpr(AST_NO,PR_ASTLVL);
                trapsig = 0;
+               uvmexp.softs++;
                mi_ast(p, want_resched);
                break;
 
index d8c52ea..3cbf788 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: syscall_mi.h,v 1.4 2014/05/10 05:33:00 guenther Exp $ */
+/*     $OpenBSD: syscall_mi.h,v 1.5 2014/05/11 00:12:44 guenther Exp $ */
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -146,11 +146,9 @@ mi_child_return(struct proc *p)
 /* 
  * Do the specific processing necessary for an AST
  */
-static void
+static inline void
 mi_ast(struct proc *p, int resched)
 {
-       uvmexp.softs++;
-
        if (p->p_flag & P_OWEUPC) {
                KERNEL_LOCK();
                ADDUPROF(p);