diff --git a/libc-test/build.rs b/libc-test/build.rs index 3cc2c135f78ca..70060f89b7bbc 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -3270,6 +3270,12 @@ fn test_linux(target: &str) { // Needs musl 1.2.3 or later. "pthread_getname_np" if musl => true, + // pthread_sigqueue uses sigval, which was initially declared + // as a struct but should be defined as a union. However due + // to the issues described here: https://github.com/rust-lang/libc/issues/2816 + // it can't be changed from struct. + "pthread_sigqueue" => true, + _ => false, } }); diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index 57600f24b8f12..282b737707c86 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -1729,6 +1729,7 @@ extern "C" { val: *mut ::c_int, ) -> ::c_int; pub fn pthread_rwlockattr_setpshared(attr: *mut pthread_rwlockattr_t, val: ::c_int) -> ::c_int; + pub fn pthread_sigqueue(thread: ::pthread_t, sig: ::c_int, value: ::sigval) -> ::c_int; pub fn ptsname_r(fd: ::c_int, buf: *mut ::c_char, buflen: ::size_t) -> ::c_int; pub fn clearenv() -> ::c_int; pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, options: ::c_int)