diff options
author | Elliott Hughes <enh@google.com> | 2015-04-22 21:40:38 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2015-04-23 08:41:45 -0700 |
commit | 3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208 (patch) | |
tree | 310c54610766a838a0569f8e44b33e7805b2d42c /libc/arch-mips/syscalls/___close.S | |
parent | ff18108981aa1fa73696d6db1919cdc38788bd4e (diff) | |
download | bionic-3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208.zip bionic-3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208.tar.gz bionic-3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208.tar.bz2 |
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
Diffstat (limited to 'libc/arch-mips/syscalls/___close.S')
-rw-r--r-- | libc/arch-mips/syscalls/___close.S | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libc/arch-mips/syscalls/___close.S b/libc/arch-mips/syscalls/___close.S new file mode 100644 index 0000000..356cfd6 --- /dev/null +++ b/libc/arch-mips/syscalls/___close.S @@ -0,0 +1,20 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include <private/bionic_asm.h> + +ENTRY(___close) + .set noreorder + .cpload t9 + li v0, __NR_close + syscall + bnez a3, 1f + move a0, v0 + j ra + nop +1: + la t9,__set_errno_internal + j t9 + nop + .set reorder +END(___close) +.hidden ___close |