Deleted Added
full compact
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 ---