remove cancellation points in stdio
authorRich Felker <dalias@aerifal.cx>
Sat, 13 Jun 2015 20:53:02 +0000 (20:53 +0000)
committerRich Felker <dalias@aerifal.cx>
Sat, 13 Jun 2015 20:53:02 +0000 (20:53 +0000)
commit4ef9b828c1f39553a69e0635ac91f0fcadd6e8c6
tree4f673b8ddbae50ca7072b600466051c347df1fc2
parent536c6d5a4205e2a3f161f2983ce1e0ac3082187d
remove cancellation points in stdio

commit 58165923890865a6ac042fafce13f440ee986fd9 added these optional
cancellation points on the basis that cancellable stdio could be
useful, to unblock threads stuck on stdio operations that will never
complete. however, the only way to ensure that cancellation can
achieve this is to violate the rules for side effects when
cancellation is acted upon, discarding knowledge of any partial data
transfer already completed. our implementation exhibited this behavior
and was thus non-conforming.

in addition to improving correctness, removing these cancellation
points moderately reduces code size, and should significantly improve
performance on i386, where sysenter/syscall instructions can be used
instead of "int $128" for non-cancellable syscalls.
src/stdio/__stdio_read.c
src/stdio/__stdio_write.c
src/stdio/fopen.c