]> git.tue.mpg.de Git - paraslash.git/commit
sched: Get rid of (pre)select shortcuts.
authorAndre Noll <maan@systemlinux.org>
Sat, 30 Mar 2013 22:43:38 +0000 (22:43 +0000)
committerAndre Noll <maan@systemlinux.org>
Wed, 17 Apr 2013 20:15:46 +0000 (22:15 +0200)
commit01f8023b7fe59abc29072c7b84caec5961f8f14b
tree03a87209799e5bedeff5d8e58f7fdeab3ee4576a
parent5bb44a414084464f133beb8810027a18b4254d1f
sched: Get rid of (pre)select shortcuts.

These shortcuts let the scheduler skip any subsequent ->pre_select()
calls as well as the actual call to select(2) if the current task's
->pre_select() requested a zero timeout.

This idea turned out to be dubios at best. The main problem is that
->post_select no longer knows whether ->pre_select() and select()
have been called. For example, if ->pre_select() monitors some file
descriptor, ->post_select() might find it not ready for I/O even when
it actually is because ->pre_select() or select() was optimized away.

Another problem are tasks whose ->post_select() method expects that
->pre_select() sets some variable in a shared data structure.

This patch removes the scheduler optimizations so that all
->pre_select() methods of all tasks are called once per scheduler
interval.
sched.c