Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [wrstuden-revivesa] src/sys



Module Name:    src
Committed By:   wrstuden
Date:           Mon Jun 30 04:55:56 UTC 2008

Modified Files:
        src/sys/arch/amiga/amiga [wrstuden-revivesa]: trap.c
        src/sys/arch/arm/arm32 [wrstuden-revivesa]: fault.c
        src/sys/arch/atari/atari [wrstuden-revivesa]: trap.c
        src/sys/arch/cesfic/cesfic [wrstuden-revivesa]: trap.c
        src/sys/arch/hp300/hp300 [wrstuden-revivesa]: trap.c
        src/sys/arch/hppa/hppa [wrstuden-revivesa]: trap.c
        src/sys/arch/luna68k/luna68k [wrstuden-revivesa]: trap.c
        src/sys/arch/mac68k/mac68k [wrstuden-revivesa]: trap.c
        src/sys/arch/mips/mips [wrstuden-revivesa]: trap.c
        src/sys/arch/mvme68k/mvme68k [wrstuden-revivesa]: trap.c
        src/sys/arch/news68k/news68k [wrstuden-revivesa]: trap.c
        src/sys/arch/next68k/next68k [wrstuden-revivesa]: trap.c
        src/sys/arch/powerpc/ibm4xx [wrstuden-revivesa]: trap.c
        src/sys/arch/powerpc/powerpc [wrstuden-revivesa]: trap.c
        src/sys/arch/sh3/sh3 [wrstuden-revivesa]: exception.c
        src/sys/arch/sparc/sparc [wrstuden-revivesa]: trap.c
        src/sys/arch/sparc64/sparc64 [wrstuden-revivesa]: trap.c
        src/sys/arch/x68k/x68k [wrstuden-revivesa]: trap.c
        src/sys/kern [wrstuden-revivesa]: kern_exit.c kern_sa.c kern_sig.c
            kern_sleepq.c kern_time.c
        src/sys/sys [wrstuden-revivesa]: lwp.h

Log Message:
Change how we make SA threads not generate upcalls. Instead of clearing
LW_SA, use a private flag, LP_SA_NOBLOCK, that we set when we want
to not generate upcalls. This means we do NOT need to lock (l)
(ourselves) to set it.

Adjust tests that look at LW_SA. Now, we are an upcall-generating
lwp if ((l->l_flag & LW_SA) && (~l->l_pflag & LP_SA_NOBLOCK)).

Introduce code pattern to set & remember this:

        f = ~l->l_pflag & LP_SA_NOBLOCK;
        l->l_pflag |= LP_SA_NOBLOCK;

        ...

        /* f is now LP_SA_NOBLOCK if it wasn't set in l_pflag before */

        l->l_pflag ^= f;

I updated a lot of the trap handlers to do trap handling iff LP_SA_NOBLOCK
is not set. I tried to figure out if the trap handler could be triggered
for user-based faults as opposed to kernel faults to user addresses, and
only look at LP_SA_NOBLOCK for the latter.

Above is a result of discussions with rmind at to reduce lock twiddling.

Also, per same discussions, add locking to sys_sa_preempt(). p_lock is
the lock we want.

Also, per same discussions, remove use of LSSUSPENDED as a thread state.
We needed to use it when we were emulating the 4.X and previous behavior
of hiding cached threads. For the moment, we now have them instead
remain visible to all and have them sleeping on the "lwpcache" wait
channel.

sa_newcachelwp(): sa_putcachelwp() wants savp_mutex held, not p_lock.

Tweak some comments.


To generate a diff of this commit:
cvs rdiff -r1.119.4.3 -r1.119.4.4 src/sys/arch/amiga/amiga/trap.c
cvs rdiff -r1.67.2.2 -r1.67.2.3 src/sys/arch/arm/arm32/fault.c
cvs rdiff -r1.97.2.3 -r1.97.2.4 src/sys/arch/atari/atari/trap.c
cvs rdiff -r1.41.4.3 -r1.41.4.4 src/sys/arch/cesfic/cesfic/trap.c
cvs rdiff -r1.138.4.3 -r1.138.4.4 src/sys/arch/hp300/hp300/trap.c
cvs rdiff -r1.55.2.2 -r1.55.2.3 src/sys/arch/hppa/hppa/trap.c
cvs rdiff -r1.52.4.3 -r1.52.4.4 src/sys/arch/luna68k/luna68k/trap.c
cvs rdiff -r1.133.4.3 -r1.133.4.4 src/sys/arch/mac68k/mac68k/trap.c
cvs rdiff -r1.216.20.2 -r1.216.20.3 src/sys/arch/mips/mips/trap.c
cvs rdiff -r1.96.4.3 -r1.96.4.4 src/sys/arch/mvme68k/mvme68k/trap.c
cvs rdiff -r1.58.4.3 -r1.58.4.4 src/sys/arch/news68k/news68k/trap.c
cvs rdiff -r1.73.4.3 -r1.73.4.4 src/sys/arch/next68k/next68k/trap.c
cvs rdiff -r1.48.12.2 -r1.48.12.3 src/sys/arch/powerpc/ibm4xx/trap.c
cvs rdiff -r1.125.12.3 -r1.125.12.4 src/sys/arch/powerpc/powerpc/trap.c
cvs rdiff -r1.46.12.3 -r1.46.12.4 src/sys/arch/sh3/sh3/exception.c
cvs rdiff -r1.175.4.2 -r1.175.4.3 src/sys/arch/sparc/sparc/trap.c
cvs rdiff -r1.147.6.3 -r1.147.6.4 src/sys/arch/sparc64/sparc64/trap.c
cvs rdiff -r1.95.4.3 -r1.95.4.4 src/sys/arch/x68k/x68k/trap.c
cvs rdiff -r1.208.2.5 -r1.208.2.6 src/sys/kern/kern_exit.c
cvs rdiff -r1.91.2.30 -r1.91.2.31 src/sys/kern/kern_sa.c
cvs rdiff -r1.283.2.5 -r1.283.2.6 src/sys/kern/kern_sig.c
cvs rdiff -r1.28.2.2 -r1.28.2.3 src/sys/kern/kern_sleepq.c
cvs rdiff -r1.146.2.5 -r1.146.2.6 src/sys/kern/kern_time.c
cvs rdiff -r1.94.2.5 -r1.94.2.6 src/sys/sys/lwp.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



Home | Main Index | Thread Index | Old Index