diff options
author | Maarten de Vries <maarten@de-vri.es> | 2021-03-05 14:54:34 +0100 |
---|---|---|
committer | Maarten de Vries <maarten@de-vri.es> | 2021-03-05 14:54:34 +0100 |
commit | b98d5292b8cfe96213503997d9cd1f3f49bfce40 (patch) | |
tree | be3c137779f2af154e1c19f5e2ccd7fbfc84a438 /src | |
parent | 3a7135f491b8faac564c13e7d0c5fd6b10e03855 (diff) | |
download | rust-libc-b98d5292b8cfe96213503997d9cd1f3f49bfce40.tar.gz |
Re-add accept4 for Android on 32 bit ARM.
Diffstat (limited to 'src')
-rw-r--r-- | src/unix/linux_like/android/b32/arm.rs | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/unix/linux_like/android/b32/arm.rs b/src/unix/linux_like/android/b32/arm.rs index aa9beb7652..8a53e53994 100644 --- a/src/unix/linux_like/android/b32/arm.rs +++ b/src/unix/linux_like/android/b32/arm.rs @@ -521,3 +521,19 @@ pub const REG_R14: ::c_int = 14; pub const REG_R15: ::c_int = 15; pub const NGREG: ::c_int = 18; + +f! { + // Sadly, Android before 5.0 (API level 21), the accept4 syscall is not + // exposed by the libc. As work-around, we implement it through `syscall` + // directly. This workaround can be removed if the minimum version of + // Android is bumped. When the workaround is removed, `accept4` can be + // moved back to `linux_like/mod.rs` + pub fn accept4( + fd: ::c_int, + addr: *mut ::sockaddr, + len: *mut ::socklen_t, + flg: ::c_int + ) -> ::c_int { + ::syscall(SYS_accept4, fd, addr, len, flg) as ::c_int + } +} |