kern_synch.c (88019) | kern_synch.c (88088) |
---|---|
1/*- 2 * Copyright (c) 1982, 1986, 1990, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)kern_synch.c 8.9 (Berkeley) 5/19/95 | 1/*- 2 * Copyright (c) 1982, 1986, 1990, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. --- 22 unchanged lines hidden (view full) --- 31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36 * SUCH DAMAGE. 37 * 38 * @(#)kern_synch.c 8.9 (Berkeley) 5/19/95 |
39 * $FreeBSD: head/sys/kern/kern_synch.c 88019 2001-12-16 16:07:20Z luigi $ | 39 * $FreeBSD: head/sys/kern/kern_synch.c 88088 2001-12-18 00:27:18Z jhb $ |
40 */ 41 42#include "opt_ddb.h" 43#include "opt_ktrace.h" 44 45#include <sys/param.h> 46#include <sys/systm.h> 47#include <sys/condvar.h> --- 645 unchanged lines hidden (view full) --- 693mi_switch() 694{ 695 struct timeval new_switchtime; 696 struct thread *td = curthread; /* XXX */ 697 register struct proc *p = td->td_proc; /* XXX */ 698#if 0 699 register struct rlimit *rlim; 700#endif | 40 */ 41 42#include "opt_ddb.h" 43#include "opt_ktrace.h" 44 45#include <sys/param.h> 46#include <sys/systm.h> 47#include <sys/condvar.h> --- 645 unchanged lines hidden (view full) --- 693mi_switch() 694{ 695 struct timeval new_switchtime; 696 struct thread *td = curthread; /* XXX */ 697 register struct proc *p = td->td_proc; /* XXX */ 698#if 0 699 register struct rlimit *rlim; 700#endif |
701 critical_t sched_crit; | |
702 u_int sched_nest; 703 704 mtx_assert(&sched_lock, MA_OWNED | MA_NOTRECURSED); 705#ifdef INVARIANTS 706 if (p->p_stat != SMTX && p->p_stat != SRUN) 707 mtx_assert(&Giant, MA_NOTOWNED); 708#endif 709 --- 58 unchanged lines hidden (view full) --- 768 769 /* 770 * Pick a new current process and record its start time. 771 */ 772 cnt.v_swtch++; 773 PCPU_SET(switchtime, new_switchtime); 774 CTR3(KTR_PROC, "mi_switch: old proc %p (pid %d, %s)", p, p->p_pid, 775 p->p_comm); | 701 u_int sched_nest; 702 703 mtx_assert(&sched_lock, MA_OWNED | MA_NOTRECURSED); 704#ifdef INVARIANTS 705 if (p->p_stat != SMTX && p->p_stat != SRUN) 706 mtx_assert(&Giant, MA_NOTOWNED); 707#endif 708 --- 58 unchanged lines hidden (view full) --- 767 768 /* 769 * Pick a new current process and record its start time. 770 */ 771 cnt.v_swtch++; 772 PCPU_SET(switchtime, new_switchtime); 773 CTR3(KTR_PROC, "mi_switch: old proc %p (pid %d, %s)", p, p->p_pid, 774 p->p_comm); |
776 sched_crit = sched_lock.mtx_savecrit; | |
777 sched_nest = sched_lock.mtx_recurse; 778 td->td_lastcpu = td->td_kse->ke_oncpu; 779 td->td_kse->ke_oncpu = NOCPU; 780 td->td_kse->ke_flags &= ~KEF_NEEDRESCHED; 781 cpu_switch(); 782 td->td_kse->ke_oncpu = PCPU_GET(cpuid); | 775 sched_nest = sched_lock.mtx_recurse; 776 td->td_lastcpu = td->td_kse->ke_oncpu; 777 td->td_kse->ke_oncpu = NOCPU; 778 td->td_kse->ke_flags &= ~KEF_NEEDRESCHED; 779 cpu_switch(); 780 td->td_kse->ke_oncpu = PCPU_GET(cpuid); |
783 sched_lock.mtx_savecrit = sched_crit; | |
784 sched_lock.mtx_recurse = sched_nest; 785 sched_lock.mtx_lock = (uintptr_t)td; 786 CTR3(KTR_PROC, "mi_switch: new proc %p (pid %d, %s)", p, p->p_pid, 787 p->p_comm); 788 if (PCPU_GET(switchtime.tv_sec) == 0) 789 microuptime(PCPU_PTR(switchtime)); 790 PCPU_SET(switchticks, ticks); 791} --- 185 unchanged lines hidden --- | 781 sched_lock.mtx_recurse = sched_nest; 782 sched_lock.mtx_lock = (uintptr_t)td; 783 CTR3(KTR_PROC, "mi_switch: new proc %p (pid %d, %s)", p, p->p_pid, 784 p->p_comm); 785 if (PCPU_GET(switchtime.tv_sec) == 0) 786 microuptime(PCPU_PTR(switchtime)); 787 PCPU_SET(switchticks, ticks); 788} --- 185 unchanged lines hidden --- |