select-readme This patch removes the wait queue manipulation when you call select(2) with a timeout of 0 (i.e. don't wait). It does the same thing for select(2) as my poll patch did for poll(2). The only reason this one is bigger is because I had to structure select(2) more like poll(2). The theory behind this is that if you don't want to wait, there is no need to place the process on a wait queue (a process placed on a wait queue will be put to sleep on a subsequent call to schedule(), not before, as kernel code is not pre-emtable). This patch also prevents the allocation of a wait table entry if there is no need to manipulate wait queues (i.e. zero timeout) for both select(2) and poll(2). These unnecessary manipulations of wait queues consume a lot of time: without this patch it takes over 4 milliseconds to call select(2) and now it takes nearly 2 milliseconds. The timing test was performed on a Pentium 100 while polling 1021 file descriptors. The file descriptors are from the pseudo tty device created for a rlogin session. In addition, not allocating a page to hold the wait table can save a lot of time in RAM starvation situations, where the polling process may have to wait for some page to be swapped to disc before one is freed. The patch is against virgin 2.1.52. It is also compatible with my pdeath patch. Linus has a slightly modified patch based on my patch, which I've tested for him, which has been included in 2.1.53.