Count non-threaded group.

This commit is contained in:
David Xu 2003-02-19 13:40:24 +00:00
parent 4f6cfa4520
commit fc8cdd87d2
2 changed files with 20 additions and 10 deletions

View File

@ -1692,14 +1692,18 @@ thread_userret(struct thread *td, struct trapframe *frame)
break;
upcalls = 0;
mtx_lock_spin(&sched_lock);
FOREACH_KSEGRP_IN_PROC(p, kg2)
upcalls += kg2->kg_numupcalls;
FOREACH_KSEGRP_IN_PROC(p, kg2) {
if (kg2->kg_numupcalls == 0)
upcalls++;
else
upcalls += kg2->kg_numupcalls;
}
mtx_unlock_spin(&sched_lock);
if (upcalls >= max_threads_per_proc)
break;
p->p_maxthrwaits++;
msleep(&p->p_numthreads, &p->p_mtx, PPAUSE|PCATCH, "maxthreads",
NULL);
msleep(&p->p_numthreads, &p->p_mtx, PPAUSE|PCATCH,
"maxthreads", NULL);
p->p_maxthrwaits--;
}
PROC_UNLOCK(p);
@ -1707,7 +1711,8 @@ thread_userret(struct thread *td, struct trapframe *frame)
if (error) {
/*
* Things are going to be so screwed we should just kill the process.
* Things are going to be so screwed we should just kill
* the process.
* how do we do that?
*/
PROC_LOCK(td->td_proc);

View File

@ -1692,14 +1692,18 @@ thread_userret(struct thread *td, struct trapframe *frame)
break;
upcalls = 0;
mtx_lock_spin(&sched_lock);
FOREACH_KSEGRP_IN_PROC(p, kg2)
upcalls += kg2->kg_numupcalls;
FOREACH_KSEGRP_IN_PROC(p, kg2) {
if (kg2->kg_numupcalls == 0)
upcalls++;
else
upcalls += kg2->kg_numupcalls;
}
mtx_unlock_spin(&sched_lock);
if (upcalls >= max_threads_per_proc)
break;
p->p_maxthrwaits++;
msleep(&p->p_numthreads, &p->p_mtx, PPAUSE|PCATCH, "maxthreads",
NULL);
msleep(&p->p_numthreads, &p->p_mtx, PPAUSE|PCATCH,
"maxthreads", NULL);
p->p_maxthrwaits--;
}
PROC_UNLOCK(p);
@ -1707,7 +1711,8 @@ thread_userret(struct thread *td, struct trapframe *frame)
if (error) {
/*
* Things are going to be so screwed we should just kill the process.
* Things are going to be so screwed we should just kill
* the process.
* how do we do that?
*/
PROC_LOCK(td->td_proc);