Re: sched_switch (sched_4bsd) may be preempted

From: Julian Elischer (julian_at_elischer.org)
Date: 10/04/04

  • Next message: Peter Holm: "Re: scheduler (sched_4bsd) questions"
    Date: Mon, 04 Oct 2004 11:38:46 -0700
    To: John Baldwin <jhb@freebsd.org>
    
    

    John Baldwin wrote:

    >On Friday 01 October 2004 01:55 am, Stephan Uphoff wrote:
    >
    >
    >>sched_switch (sched_4bsd) may be preempted in setrunqueue or slot_fill.
    >>This could be ugly.
    >>Wrapping it into a critical section and resetting TDP_OWEPREEMPT should
    >>work.
    >>
    >>Hand trimmed patch:
    >>
    >>RCS file: /cvsroot/src/sys/kern/sched_4bsd.c,v
    >>retrieving revision 1.65
    >>diff -u -r1.65 sched_4bsd.c
    >>--- sys/kern/sched_4bsd.c 16 Sep 2004 07:12:59 -0000 1.65
    >>+++ sys/kern/sched_4bsd.c 1 Oct 2004 05:35:28 -0000
    >>@@ -823,6 +823,7 @@
    >> TD_SET_CAN_RUN(td);
    >> else {
    >> td->td_ksegrp->kg_avail_opennings++;
    >>+ critical_enter();
    >> if (TD_IS_RUNNING(td)) {
    >> /* Put us back on the run queue (kse and all).
    >>*/
    >> setrunqueue(td, SRQ_OURSELF|SRQ_YIELDING);
    >>@@ -834,6 +835,8 @@
    >> */
    >> slot_fill(td->td_ksegrp);
    >> }
    >>+ critical_exit();
    >>+ td->td_pflags &= ~TDP_OWEPREEMPT;
    >> }
    >> if (newtd == NULL)
    >> newtd = choosethread();
    >>
    >>
    >
    >I thought that SRQ_YIELDING turned preempting off already.
    >
    >
    well, that was the intention.. I wonder if there can be more nesting than we expect?

    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"


  • Next message: Peter Holm: "Re: scheduler (sched_4bsd) questions"

    Relevant Pages