summaryrefslogtreecommitdiffstats
path: root/libc/arch-mips/syscalls/___close.S
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-04-22 21:40:38 -0700
committerElliott Hughes <enh@google.com>2015-04-23 08:41:45 -0700
commit3391a9ff139d57fe4f8a2ff2d81a5ddc230a6208 (patch)
tree310c54610766a838a0569f8e44b33e7805b2d42c /libc/arch-mips/syscalls/___close.S
parentff18108981aa1fa73696d6db1919cdc38788bd4e (diff)
downloadbionic-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.S20
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