PERFORCE change 99646 for review
Andrew R. Reiter
arr at watson.org
Wed Jun 21 05:19:21 UTC 2006
On Tue, 20 Jun 2006, Kip Macy wrote:
:Actually rwlocks would probably be best - but they're sx locks right
:now to make WITNESS happy. Any speedup that comes won't come from
:being shared, as the allproc lock was shared, it will come from making
:the process lists per-cpu so that fork, exit, and functions scanning
:the process lists won't be serialized across all cpus.
ah; yes. PCPU would be much nicer. Thanks for responding.
:
:On 6/19/06, Andrew R. Reiter <arr at watson.org> wrote:
:> On Mon, 19 Jun 2006, Kip Macy wrote:
:>
:> :http://perforce.freebsd.org/chv.cgi?CH=99646
:> :
:> :Change 99646 by kmacy at kmacy_storage:sun4v_work_sleepq on 2006/06/19 23:29:26
:> :
:> : convert pcpu allproc locks to sx to avoid having to fix cases where
:> : sx locks are being acquired afterwards
:> : add 2 missed unlocks
:>
:> Nice. Good thought. I have seen the recent "benchmark" SMP emails and am
:> not aggro like DT, so I don't care about too much detail; however, do you
:> believe the switch from straight mutex locks to shared/exclusive locks
:> will assist in some performance areas?
:>
:> Thanks for your work,
:> Andrew
:>
:> :
:> :Affected files ...
:> :
:> :.. //depot/projects/kmacy_sun4v/src/sys/fs/pseudofs/pseudofs_vnops.c#4 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/imgact_elf.c#4 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/init_main.c#7 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_descrip.c#5 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_exit.c#6 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_fork.c#6 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_ktrace.c#5 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_proc.c#5 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_resource.c#6 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/kern_sig.c#9 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/sched_4bsd.c#9 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/subr_pcpu.c#4 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/subr_witness.c#7 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/kern/sys_process.c#6 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/sun4v/include/pcpu.h#15 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/sys/pcpu.h#4 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/sys/proc.h#7 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/vm/vm_glue.c#7 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/vm/vm_meter.c#5 edit
:> :.. //depot/projects/kmacy_sun4v/src/sys/vm/vm_pageout.c#4 edit
:> :
:> :Differences ...
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/fs/pseudofs/pseudofs_vnops.c#4
:> (text+ko) ====
:> :
:> :@@ -568,18 +568,18 @@
:> : /* next process */
:> : if (*p == NULL) {
:> : *p = LIST_FIRST(&(*pc)->pc_allproc);
:> :- PCPU_PROC_LOCK(*pc);
:> :+ PCPU_PROC_RLOCK(*pc);
:> : } else if ((LIST_NEXT(*p, p_list) == NULL) &&
:> (SLIST_NEXT(*pc, pc_allcpu) != NULL)) {
:> :- PCPU_PROC_UNLOCK(*pc);
:> :+ PCPU_PROC_RUNLOCK(*pc);
:> : *pc = SLIST_NEXT(*pc, pc_allcpu);
:> :- PCPU_PROC_LOCK(*pc);
:> :+ PCPU_PROC_RLOCK(*pc);
:> : *p = LIST_FIRST(&(*pc)->pc_allproc);
:> : } else {
:> : *p = LIST_NEXT(*p, p_list);
:> : }
:> : /* out of processes: next node */
:> : if (*p == NULL) {
:> :- PCPU_PROC_UNLOCK(*pc);
:> :+ PCPU_PROC_RUNLOCK(*pc);
:> : *pn = (*pn)->pn_next;
:> : }
:> : }
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/imgact_elf.c#4 (text+ko) ====
:> :
:> :@@ -147,14 +147,14 @@
:> :
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> :-
:> : if (p->p_sysent == entry->sysvec) {
:> : rval = TRUE;
:> : break;
:> : }
:> : }
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> :
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/init_main.c#7 (text+ko) ====
:> :
:> :@@ -539,12 +539,12 @@
:> :
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : microuptime(&p->p_stats->p_start);
:> : p->p_rux.rux_runtime = 0;
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : PCPU_SET(switchtime, cpu_ticks());
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_descrip.c#5 (text+ko)
:> ====
:> :
:> :@@ -2357,7 +2357,7 @@
:> :
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : fdp = fdhold(p);
:> : if (fdp == NULL)
:> :@@ -2379,7 +2379,7 @@
:> : while (nrele--)
:> : vrele(olddp);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : if (rootvnode == olddp) {
:> :@@ -2459,7 +2459,7 @@
:> : xf.xf_size = sizeof(xf);
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : if (p->p_state == PRS_NEW)
:> : continue;
:> :@@ -2496,7 +2496,7 @@
:> : if (error)
:> : break;
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : return (error);
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_exit.c#6 (text+ko) ====
:> :
:> :@@ -403,15 +403,10 @@
:> : * Remove proc from allproc queue and pidhash chain.
:> : * Place onto zombproc. Unlink from parent's child list.
:> : */
:> :- if (p->p_pcpu == NULL)
:> :- panic("process: %d has null pcpu pointer", p->p_pid);
:> :- if (!mtx_initialized(&(p->p_pcpu->pc_allproc_lock)))
:> :- panic("null allproc lock on %d", p->p_pcpu->pc_cpuid);
:> :-
:> :- PCPU_PROC_LOCK(p->p_pcpu);
:> :+ PCPU_PROC_WLOCK(p->p_pcpu);
:> : LIST_REMOVE(p, p_list);
:> : LIST_INSERT_HEAD(&p->p_pcpu->pc_zombproc, p, p_list);
:> :- PCPU_PROC_UNLOCK(p->p_pcpu);
:> :+ PCPU_PROC_WUNLOCK(p->p_pcpu);
:> :
:> : mtx_lock(&pidhash_lock);
:> : LIST_REMOVE(p, p_hash);
:> :@@ -770,9 +765,9 @@
:> : * we have an exclusive reference.
:> : */
:> :
:> :- PCPU_PROC_LOCK(p->p_pcpu);
:> :+ PCPU_PROC_WLOCK(p->p_pcpu);
:> : LIST_REMOVE(p, p_list); /* off zombproc */
:> :- PCPU_PROC_UNLOCK(p->p_pcpu);
:> :+ PCPU_PROC_WUNLOCK(p->p_pcpu);
:> :
:> : mtx_lock(&pidhash_lock);
:> : LIST_REMOVE(p, p_hash); /* off zombproc */
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_fork.c#6 (text+ko) ====
:> :
:> :@@ -371,7 +371,7 @@
:> : * than trypid, so we can avoid checking for a while.
:> : */
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> :
:> : p2 = LIST_FIRST(&pc->pc_allproc);
:> : again:
:> :@@ -385,7 +385,7 @@
:> : trypid++;
:> : if (trypid >= pidchecked) {
:> : PROC_UNLOCK(p2);
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : goto retry;
:> : }
:> : }
:> :@@ -409,7 +409,7 @@
:> : p2 = LIST_FIRST(&pc->pc_zombproc);
:> : goto again;
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : }
:> : mtx_unlock(&pidalloc_lock);
:> :@@ -429,9 +429,9 @@
:> : AUDIT_ARG(pid, p2->p_pid);
:> : p2->p_pcpu = pcpup;
:> :
:> :- PCPU_PROC_LOCK(p2->p_pcpu);
:> :+ PCPU_PROC_WLOCK(p2->p_pcpu);
:> : LIST_INSERT_HEAD(&p2->p_pcpu->pc_allproc, p2, p_list);
:> :- PCPU_PROC_UNLOCK(p2->p_pcpu);
:> :+ PCPU_PROC_WUNLOCK(p2->p_pcpu);
:> :
:> : mtx_lock(&pidhash_lock);
:> : LIST_INSERT_HEAD(PIDHASH(p2->p_pid), p2, p_hash);
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_ktrace.c#5 (text+ko)
:> ====
:> :
:> :@@ -640,7 +640,7 @@
:> : if (ops == KTROP_CLEARFILE) {
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : PROC_LOCK(p);
:> : if (p->p_tracevp == vp) {
:> :@@ -664,7 +664,7 @@
:> : } else
:> : PROC_UNLOCK(p);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : goto done;
:> :@@ -983,7 +983,7 @@
:> : cred = NULL;
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : PROC_LOCK(p);
:> : if (p->p_tracevp == vp) {
:> :@@ -1001,7 +1001,7 @@
:> : cred = NULL;
:> : }
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> :
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_proc.c#5 (text+ko) ====
:> :
:> :@@ -110,9 +110,10 @@
:> : void
:> : procinit()
:> : {
:> :-
:> :+
:> : sx_init(&allpcpu_lock, "allpcpu");
:> : sx_init(&proctree_lock, "proctree");
:> :+ sx_init(&pcpu_find(0)->pc_allproc_lock, "cpu allproc");
:> : mtx_init(&ppeers_lock, "p_peers", NULL, MTX_DEF);
:> : mtx_init(&pidalloc_lock, "pidalloc", NULL, MTX_DEF);
:> : mtx_init(&pidhash_lock, "pidhash", NULL, MTX_DEF);
:> :@@ -1002,7 +1003,7 @@
:> : sx_slock(&allpcpu_lock);
:> : for (doingzomb = 0 ; doingzomb < 2 ; doingzomb++) {
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : if (!doingzomb)
:> : p = LIST_FIRST(&pc->pc_allproc);
:> : else
:> :@@ -1105,12 +1106,12 @@
:> :
:> : error = sysctl_out_proc(p, req, flags |
:> doingzomb);
:> : if (error) {
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : sx_sunlock(&allpcpu_lock);
:> : return (error);
:> : }
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_resource.c#6 (text+ko)
:> ====
:> :
:> :@@ -144,7 +144,7 @@
:> : uap->who = td->td_ucred->cr_uid;
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : PROC_LOCK(p);
:> : if (!p_cansee(td, p) &&
:> :@@ -154,7 +154,7 @@
:> : }
:> : PROC_UNLOCK(p);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : break;
:> :@@ -236,9 +236,8 @@
:> : uap->who = td->td_ucred->cr_uid;
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> :-
:> : PROC_LOCK(p);
:> : if (p->p_ucred->cr_uid == uap->who &&
:> : !p_cansee(td, p)) {
:> :@@ -247,6 +246,7 @@
:> : }
:> : PROC_UNLOCK(p);
:> : }
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : break;
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/kern_sig.c#9 (text+ko) ====
:> :
:> :@@ -1648,7 +1648,7 @@
:> : */
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : PROC_LOCK(p);
:> : if (p->p_pid <= 1 || p->p_flag & P_SYSTEM ||
:> :@@ -1663,7 +1663,7 @@
:> : }
:> : PROC_UNLOCK(p);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : } else {
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/sched_4bsd.c#9 (text+ko) ====
:> :
:> :@@ -392,7 +392,7 @@
:> : realstathz = stathz ? stathz : hz;
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : /*
:> : * Prevent state changes and protect run queue.
:> :@@ -481,7 +481,7 @@
:> : } /* end of thread loop */
:> : mtx_unlock_spin(&sched_lock);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : } /* end of process loop */
:> : sx_sunlock(&allpcpu_lock);
:> : }
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/subr_pcpu.c#4 (text+ko) ====
:> :
:> :@@ -75,7 +75,8 @@
:> : cpuid_to_pcpu[cpuid] = pcpu;
:> : LIST_INIT(&pcpu->pc_allproc);
:> : LIST_INIT(&pcpu->pc_zombproc);
:> :- mtx_init(&pcpu->pc_allproc_lock, "cpu allproc", NULL, MTX_DEF);
:> :+ if (cpuid != 0)
:> :+ sx_init(&pcpu->pc_allproc_lock, "cpu allproc");
:> : SLIST_INSERT_HEAD(&cpuhead, pcpu, pc_allcpu);
:> : cpu_pcpu_init(pcpu, cpuid, size);
:> : }
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/subr_witness.c#7 (text+ko)
:> ====
:> :
:> :@@ -275,13 +275,13 @@
:> : */
:> : { "proctree", &lock_class_sx },
:> : { "allpcpu", &lock_class_sx },
:> :+ { "cpu allproc", &lock_class_sx },
:> : { NULL, NULL },
:> : /*
:> : * Various mutexes
:> : */
:> : { "Giant", &lock_class_mtx_sleep },
:> : { "pidalloc", &lock_class_mtx_sleep },
:> :- { "cpu allproc", &lock_class_mtx_sleep },
:> : { "pidhash", &lock_class_mtx_sleep },
:> : { "filedesc structure", &lock_class_mtx_sleep },
:> : { "pipe mutex", &lock_class_mtx_sleep },
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/kern/sys_process.c#6 (text+ko)
:> ====
:> :
:> :@@ -532,7 +532,7 @@
:> : /* this is slow, should be optimized */
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : PROC_LOCK(p);
:> : mtx_lock_spin(&sched_lock);
:> :@@ -545,6 +545,7 @@
:> : break; /* proc lock held */
:> : PROC_UNLOCK(p);
:> : }
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : if (p == NULL) {
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/sun4v/include/pcpu.h#15 (text+ko)
:> ====
:> :
:> :@@ -79,7 +79,7 @@
:> : struct rwindow pc_tsbwbuf[2]; \
:> : u_int pc_node; \
:> : uint16_t pc_cpulist[MAXCPU]; \
:> :- uint64_t pad[6];
:> :+ uint64_t pad[7];
:> :
:> : /* XXX SUN4V_FIXME - as we access the *_ra and *_size fields in quick
:> : * succession we _really_ want them to be L1 cache line size aligned
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/sys/pcpu.h#4 (text+ko) ====
:> :
:> :@@ -43,12 +43,13 @@
:> :
:> : #include <sys/queue.h>
:> : #include <sys/vmmeter.h>
:> :+#include <sys/sx.h>
:> : #include <machine/pcpu.h>
:> :
:> : LIST_HEAD(proclist, proc);
:> : struct pcb;
:> : struct thread;
:> :-
:> :+struct sx;
:> : /*
:> : * This structure maps out the global data that needs to be kept on a
:> : * per-cpu basis. The members are accessed via the PCPU_GET/SET/PTR
:> :@@ -68,7 +69,7 @@
:> : cpumask_t pc_other_cpus; /* Mask of all other cpus */
:> : SLIST_ENTRY(pcpu) pc_allcpu;
:> : struct lock_list_entry *pc_spinlocks;
:> :- struct mtx pc_allproc_lock; /* lock for pcpu process list
:> */
:> :+ struct sx pc_allproc_lock; /* lock for pcpu process list
:> */
:> : struct proclist pc_zombproc;
:> : struct proclist pc_allproc;
:> : #ifdef KTR_PERCPU
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/sys/proc.h#7 (text+ko) ====
:> :
:> :@@ -623,8 +623,10 @@
:> : #define PROC_LOCK_ASSERT(p, type) mtx_assert(&(p)->p_mtx,
:> (type))
:> :
:> : /* lock pcpu process list */
:> :-#define PCPU_PROC_LOCK(pc) mtx_lock(&(pc)->pc_allproc_lock)
:> :-#define PCPU_PROC_UNLOCK(pc) mtx_unlock(&(pc)->pc_allproc_lock)
:> :+#define PCPU_PROC_RLOCK(pc) sx_slock(&(pc)->pc_allproc_lock)
:> :+#define PCPU_PROC_RUNLOCK(pc) sx_sunlock(&(pc)->pc_allproc_lock)
:> :+#define PCPU_PROC_WLOCK(pc) sx_xlock(&(pc)->pc_allproc_lock)
:> :+#define PCPU_PROC_WUNLOCK(pc) sx_xunlock(&(pc)->pc_allproc_lock)
:> :
:> :
:> : /* Lock and unlock a process group. */
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/vm/vm_glue.c#7 (text+ko) ====
:> :
:> :@@ -678,7 +678,7 @@
:> : ppri = INT_MIN;
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : if (p->p_sflag & (PS_INMEM | PS_SWAPPINGOUT |
:> PS_SWAPPINGIN))
:> : continue;
:> :@@ -709,7 +709,7 @@
:> : }
:> : mtx_unlock_spin(&sched_lock);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> :
:> :@@ -808,7 +808,7 @@
:> : retry:
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> :
:> : struct vmspace *vm;
:> :@@ -930,7 +930,7 @@
:> : PROC_UNLOCK(p);
:> : vm_map_unlock(&vm->vm_map);
:> : vmspace_free(vm);
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : sx_sunlock(&allpcpu_lock);
:> : goto retry;
:> : }
:> :@@ -944,7 +944,7 @@
:> : vmspace_free(vm);
:> : continue;
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : /*
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/vm/vm_meter.c#5 (text+ko) ====
:> :
:> :@@ -143,7 +143,7 @@
:> : */
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : if (p->p_flag & P_SYSTEM)
:> : continue;
:> :@@ -209,7 +209,7 @@
:> : if (paging)
:> : totalp->t_pw++;
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : /*
:> :
:> :==== //depot/projects/kmacy_sun4v/src/sys/vm/vm_pageout.c#4 (text+ko) ====
:> :
:> :@@ -1224,7 +1224,7 @@
:> : bigsize = 0;
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : int breakout;
:> :
:> :@@ -1281,7 +1281,7 @@
:> : } else
:> : PROC_UNLOCK(p);
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : if (bigproc != NULL) {
:> :@@ -1576,7 +1576,7 @@
:> :
:> : sx_slock(&allpcpu_lock);
:> : SLIST_FOREACH(pc, &cpuhead, pc_allcpu) {
:> :- PCPU_PROC_LOCK(pc);
:> :+ PCPU_PROC_RLOCK(pc);
:> : LIST_FOREACH(p, &pc->pc_allproc, p_list) {
:> : vm_pindex_t limit, size;
:> :
:> :@@ -1630,7 +1630,7 @@
:> : &p->p_vmspace->vm_map,
:> limit);
:> : }
:> : }
:> :- PCPU_PROC_UNLOCK(pc);
:> :+ PCPU_PROC_RUNLOCK(pc);
:> : }
:> : sx_sunlock(&allpcpu_lock);
:> : }
:> :
:> :
:>
:> --
:> arr at watson.org
:>
:
:
--
arr at watson.org
More information about the p4-projects
mailing list