Used pthread name functions returning result for FreeBSD and DragonFly
This commit is contained in:
parent
45089ec19e
commit
8795750d43
1 changed files with 13 additions and 11 deletions
|
@ -129,25 +129,27 @@ impl Thread {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
#[cfg(any(target_os = "linux", target_os = "freebsd", target_os = "dragonfly"))]
|
||||
pub fn set_name(name: &CStr) {
|
||||
const TASK_COMM_LEN: usize = 16;
|
||||
|
||||
unsafe {
|
||||
// Available since glibc 2.12, musl 1.1.16, and uClibc 1.0.20.
|
||||
let name = truncate_cstr::<{ TASK_COMM_LEN }>(name);
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(target_os = "linux")] {
|
||||
// Linux limits the allowed length of the name.
|
||||
const TASK_COMM_LEN: usize = 16;
|
||||
let name = truncate_cstr::<{ TASK_COMM_LEN }>(name);
|
||||
} else {
|
||||
// FreeBSD and DragonFly BSD do not enforce length limits.
|
||||
}
|
||||
};
|
||||
// Available since glibc 2.12, musl 1.1.16, and uClibc 1.0.20 for Linux,
|
||||
// FreeBSD 12.2 and 13.0, and DragonFly BSD 6.0.
|
||||
let res = libc::pthread_setname_np(libc::pthread_self(), name.as_ptr());
|
||||
// We have no good way of propagating errors here, but in debug-builds let's check that this actually worked.
|
||||
debug_assert_eq!(res, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(
|
||||
target_os = "freebsd",
|
||||
target_os = "dragonfly",
|
||||
target_os = "openbsd",
|
||||
target_os = "nuttx"
|
||||
))]
|
||||
#[cfg(any(target_os = "openbsd", target_os = "nuttx"))]
|
||||
pub fn set_name(name: &CStr) {
|
||||
unsafe {
|
||||
libc::pthread_set_name_np(libc::pthread_self(), name.as_ptr());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue