Date: Fri, 21 Jan 2011 18:50:09 GMT From: Edward Tomasz Napierala <trasz@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 188039 for review Message-ID: <201101211850.p0LIo9iD010543@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@188039?ac=10 Change 188039 by trasz@trasz_victim on 2011/01/21 18:49:42 We need proc lock to use FOREACH_THREAD_IN_PROC(). Affected files ... .. //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#58 edit Differences ... ==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#58 (text+ko) ==== @@ -712,6 +712,8 @@ u_char newpri; int type; + PROC_LOCK_ASSERT(p, MA_OWNED); + if (throttle) { p->p_flag |= P_THROTTLED; newpri = PRI_MIN_IDLE; @@ -781,6 +783,7 @@ FOREACH_PROC_IN_SYSTEM(p) { pctcpu_limit = rusage_get_limit(p, RUSAGE_PCTCPU); pctcpu = 0; + PROC_LOCK(p); PROC_SLOCK(p); FOREACH_THREAD_IN_PROC(p, td) { ruxagg(p, td); @@ -788,15 +791,14 @@ pctcpu += sched_pctcpu(td); thread_unlock(td); } + PROC_SUNLOCK(p); pctcpu = ((pctcpu * 10000 + FSCALE / 2) >> FSHIFT) / 100; if (pctcpu > pctcpu_limit) rusage_throttle(p, 1); else rusage_throttle(p, 0); - PROC_SUNLOCK(p); microuptime(&wallclock); timevalsub(&wallclock, &p->p_stats->p_start); - PROC_LOCK(p); rusage_set(p, RUSAGE_WALLCLOCK, wallclock.tv_sec * 1000000 + wallclock.tv_usec); rusage_set(p, RUSAGE_PCTCPU, pctcpu); rusage_set(p, RUSAGE_CPU, cputick2usec(p->p_rux.rux_runtime));
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101211850.p0LIo9iD010543>