On Mon, Sep 05, 2016 at 10:30:24AM -0700, John Baldwin wrote: > On Sunday, September 04, 2016 12:29:49 AM Mark Johnston wrote: > > Author: markj > > Date: Sun Sep 4 00:29:48 2016 > > New Revision: 305368 > > URL: https://svnweb.freebsd.org/changeset/base/305368 > > > > Log: > > Micro-optimize sleepq_signal(). > > > > Lift a comparison out of the loop that finds the highest-priority thread > > on the queue. > > > > MFC after: 1 week > > Could this safely use TAILQ_FOREACH_FROM?
Are you suggesting something like this? besttd = TAILQ_FIRST(&sq->sq_blocked[queue]); td = TAILQ_NEXT(besttd, td_slpq); TAILQ_FOREACH_FROM(td, &sq->sq_blocked[queue], td_slpq) { ... I think that would work, and it avoids visiting the first element unnecessarily when the queue contains more than one element. If the queue contains one element, we'd visit it because of TAILQ_FOREACH_FROM's surprising behaviour of iterating over the entire queue when the listelem is NULL. _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"