Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/kern_racct.c
Show First 20 Lines • Show All 1,250 Lines • ▼ Show 20 Lines | racctd(void) | ||||
ASSERT_RACCT_ENABLED(); | ASSERT_RACCT_ENABLED(); | ||||
for (;;) { | for (;;) { | ||||
racct_decay(); | racct_decay(); | ||||
sx_slock(&allproc_lock); | sx_slock(&allproc_lock); | ||||
sx_slock(&zombproc_lock); | |||||
LIST_FOREACH(p, &zombproc, p_list) { | |||||
PROC_LOCK(p); | |||||
racct_set(p, RACCT_PCTCPU, 0); | |||||
PROC_UNLOCK(p); | |||||
} | |||||
sx_sunlock(&zombproc_lock); | |||||
FOREACH_PROC_IN_SYSTEM(p) { | FOREACH_PROC_IN_SYSTEM(p) { | ||||
PROC_LOCK(p); | PROC_LOCK(p); | ||||
if (p->p_state != PRS_NORMAL) { | if (p->p_state != PRS_NORMAL) { | ||||
if (p->p_state == PRS_ZOMBIE) | |||||
racct_set(p, RACCT_PCTCPU, 0); | |||||
PROC_UNLOCK(p); | PROC_UNLOCK(p); | ||||
continue; | continue; | ||||
} | } | ||||
microuptime(&wallclock); | microuptime(&wallclock); | ||||
timevalsub(&wallclock, &p->p_stats->p_start); | timevalsub(&wallclock, &p->p_stats->p_start); | ||||
PROC_STATLOCK(p); | PROC_STATLOCK(p); | ||||
FOREACH_THREAD_IN_PROC(p, td) | FOREACH_THREAD_IN_PROC(p, td) | ||||
▲ Show 20 Lines • Show All 93 Lines • Show Last 20 Lines |