OSDN Git Service

Simplify close(2) EINTR handling.
authorElliott Hughes <enh@google.com>
Thu, 23 Apr 2015 04:40:38 +0000 (21:40 -0700)
committerElliott Hughes <enh@google.com>
Thu, 23 Apr 2015 15:41:45 +0000 (08:41 -0700)
commit3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208
tree310c54610766a838a0569f8e44b33e7805b2d42c
parentff18108981aa1fa73696d6db1919cdc38788bd4e
Simplify close(2) EINTR handling.

This doesn't affect code like Chrome that correctly ignores EINTR on
close, makes code that tries TEMP_FAILURE_RETRY work (where before it might
have closed a different fd and appeared to succeed, or had a bogus EBADF),
and makes "goto fail" code work (instead of mistakenly assuming that EINTR
means that the close failed).

Who loses? Anyone actively trying to detect that they caught a signal while
in close(2). I don't think those people exist, and I think they have better
alternatives available.

Bug: https://code.google.com/p/chromium/issues/detail?id=269623
Bug: http://b/20501816
Change-Id: I11e2f66532fe5d1b0082b2433212e24bdda8219b
libc/Android.mk
libc/SYSCALLS.TXT
libc/arch-arm/syscalls/___close.S [moved from libc/arch-arm/syscalls/close.S with 84% similarity]
libc/arch-arm64/syscalls/___close.S [moved from libc/arch-arm64/syscalls/close.S with 82% similarity]
libc/arch-mips/syscalls/___close.S [moved from libc/arch-mips/syscalls/close.S with 85% similarity]
libc/arch-mips64/syscalls/___close.S [moved from libc/arch-mips64/syscalls/close.S with 88% similarity]
libc/arch-x86/syscalls/___close.S [moved from libc/arch-x86/syscalls/close.S with 89% similarity]
libc/arch-x86_64/syscalls/___close.S [moved from libc/arch-x86_64/syscalls/close.S with 84% similarity]
libc/bionic/close.cpp [new file with mode: 0644]