May I add pthread_[gs]etconcurrency to the threads libraries?
Julian Elischer
julian at elischer.org
Wed Apr 16 14:07:15 PDT 2003
On Wed, 16 Apr 2003, Jeff Roberson wrote:
>
> I'm starting to warm up to the idea of moving kse out of the rest of the
> system. It could be confined to kern_mn.c or whatever it is eventually
> called.
Jeff I'd like to start some small diffs that resemble the one
included..
This one changes shched_clock to use a thread.
I'd also like to commit a change to make KEF_IDLEKSE
to TDF_IDLETHREAD as you suggested.
Here I'm running with a file sys/ksevar.h that has
teh kse structure in it.
eventually it would be in teh scheduler .c file
so I am not going to commit that change yet..
comments?
Julian
-------------- next part --------------
Index: sys/sched.h
===================================================================
RCS file: /repos/projects/mirrored/freebsd/src/sys/sys/sched.h,v
retrieving revision 1.4
diff -u -r1.4 sched.h
--- sys/sched.h 2003/04/11 03:39:06 1.4
+++ sys/sched.h 2003/04/16 20:59:52
@@ -68,7 +68,7 @@
*/
void sched_add(struct kse *ke);
struct kse *sched_choose(void);
-void sched_clock(struct kse *ke);
+void sched_clock(struct thread *td);
void sched_exit_kse(struct kse *ke, struct kse *child);
void sched_fork_kse(struct kse *ke, struct kse *child);
void sched_rem(struct kse *ke);
Index: kern/kern_clock.c
===================================================================
RCS file: /repos/projects/mirrored/freebsd/src/sys/kern/kern_clock.c,v
retrieving revision 1.156
diff -u -r1.156 kern_clock.c
--- kern/kern_clock.c 2003/04/11 03:39:07 1.156
+++ kern/kern_clock.c 2003/04/16 20:59:52
@@ -357,7 +357,6 @@
struct rusage *ru;
struct vmspace *vm;
struct thread *td;
- struct kse *ke;
struct proc *p;
long rss;
@@ -365,7 +364,6 @@
p = td->td_proc;
mtx_lock_spin_flags(&sched_lock, MTX_QUIET);
- ke = td->td_kse;
if (CLKF_USERMODE(frame)) {
/*
* Charge the time as appropriate.
@@ -373,7 +371,7 @@
if (p->p_flag & P_THREADED)
thread_statclock(1);
p->p_uticks++;
- if (ke->ke_ksegrp->kg_nice > NZERO)
+ if (td->td_ksegrp->kg_nice > NZERO)
cp_time[CP_NICE]++;
else
cp_time[CP_USER]++;
@@ -405,7 +403,7 @@
}
}
- sched_clock(ke);
+ sched_clock(td);
/* Update resource usage integrals and maximums. */
if ((pstats = p->p_stats) != NULL &&
Index: kern/sched_4bsd.c
===================================================================
RCS file: /repos/projects/mirrored/freebsd/src/sys/kern/sched_4bsd.c,v
retrieving revision 1.15
diff -u -r1.15 sched_4bsd.c
--- kern/sched_4bsd.c 2003/04/11 03:39:48 1.15
+++ kern/sched_4bsd.c 2003/04/16 20:59:52
@@ -438,13 +438,13 @@
* run much recently, and to round-robin among other processes.
*/
void
-sched_clock(struct kse *ke)
+sched_clock(struct thread *td)
{
struct ksegrp *kg;
- struct thread *td;
+ struct kse *ke;
- kg = ke->ke_ksegrp;
- td = ke->ke_thread;
+ kg = td->td_ksegrp;
+ ke = td->td_kse;
ke->ke_sched->ske_cpticks++;
kg->kg_estcpu = ESTCPULIM(kg->kg_estcpu + 1);
Index: kern/sched_ule.c
===================================================================
RCS file: /repos/projects/mirrored/freebsd/src/sys/kern/sched_ule.c,v
retrieving revision 1.28
diff -u -r1.28 sched_ule.c
--- kern/sched_ule.c 2003/04/12 22:33:24 1.28
+++ kern/sched_ule.c 2003/04/16 20:59:52
@@ -855,11 +855,11 @@
}
void
-sched_clock(struct kse *ke)
+sched_clock(struct thread *td)
{
struct kseq *kseq;
struct ksegrp *kg;
- struct thread *td;
+ struct kse *ke
#if 0
struct kse *nke;
#endif
@@ -880,8 +880,8 @@
tickincr = 1;
}
- td = ke->ke_thread;
- kg = ke->ke_ksegrp;
+ ke = td->td_kse;
+ kg = td->td_ksegrp;
mtx_assert(&sched_lock, MA_OWNED);
KASSERT((td != NULL), ("schedclock: null thread pointer"));
More information about the freebsd-threads
mailing list