:I'm pretty sure you only need to 'goto restart' if you call into
:maybe_resched() as someone else may have manipulated the queues.
:
:The 'restart' label is only in there for restarting in case one of
:the functions called may change the lists, if we restart _every_
:time we'll traverse the same procs where p->p_wchan != ident over
:and over needlessly.
:
:-Alfred

    Look at the code carefully.  It's *removing* the element from the list,
    the conditionally restarting rather then removing the element from the
    list and unconditionally restarting.  The only reason it works at all
    is because sys/queue.h does not clear out the pointers in the node 
    that was just removed.  The code is just plain wrong, though, because
    the queue mechanisms make no such (documented) guarentee.

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to