That's pretty much it -- any syscall() to the kernel, particularly blocking I/O, or page faults, can result in giving up the timeslice. One trick to writing fast code is to structure it so that such occurances are contained and minimized.

Don't ask me to dig through this code, though. I'd rather just write a simple replacement for it.. and I'm not even doing that.

Cheers