linux: Use pthread_setname_np
instead of prctl
This function is available on Linux since glibc 2.12, musl 1.1.16, and uClibc 1.0.20. The main advantage over `prctl` is that it properly represents the pointer argument, rather than a multi-purpose `long`, so we're better representing strict provenance (#95496).
This commit is contained in:
parent
f03ce30962
commit
013986be1b
1 changed files with 9 additions and 3 deletions
|
@ -116,11 +116,9 @@ impl Thread {
|
|||
debug_assert_eq!(ret, 0);
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
#[cfg(target_os = "android")]
|
||||
pub fn set_name(name: &CStr) {
|
||||
const PR_SET_NAME: libc::c_int = 15;
|
||||
// pthread wrapper only appeared in glibc 2.12, so we use syscall
|
||||
// directly.
|
||||
unsafe {
|
||||
libc::prctl(
|
||||
PR_SET_NAME,
|
||||
|
@ -132,6 +130,14 @@ impl Thread {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
pub fn set_name(name: &CStr) {
|
||||
unsafe {
|
||||
// Available since glibc 2.12, musl 1.1.16, and uClibc 1.0.20.
|
||||
libc::pthread_setname_np(libc::pthread_self(), name.as_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "freebsd", target_os = "dragonfly", target_os = "openbsd"))]
|
||||
pub fn set_name(name: &CStr) {
|
||||
unsafe {
|
||||
|
|
Loading…
Add table
Reference in a new issue