File tree Expand file tree Collapse file tree 1 file changed +19
-1
lines changed
library/std/src/sys/pal/unix Expand file tree Collapse file tree 1 file changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -257,14 +257,32 @@ impl Thread {
257
257
CString::new(name).ok()
258
258
}
259
259
260
+ #[cfg(target_os = "haiku")]
261
+ pub fn get_name() -> Option<CString> {
262
+ unsafe {
263
+ let mut tinfo = mem::MaybeUninit::<libc::thread_info>::uninit();
264
+ // See BeOS teams group and threads api.
265
+ // https://www.haiku-os.org/legacy-docs/bebook/TheKernelKit_ThreadsAndTeams_Overview.html
266
+ let thread_self = libc::find_thread(ptr::null_mut());
267
+ let res = libc::get_thread_info(thread_self, tinfo.as_mut_ptr());
268
+ if res != libc::B_OK {
269
+ return None;
270
+ }
271
+ let info = tinfo.assume_init();
272
+ let name = slice::from_raw_parts(info.name.as_ptr() as *const u8, info.name.len());
273
+ CStr::from_bytes_until_nul(name).map(CStr::to_owned).ok()
274
+ }
275
+ }
276
+
260
277
#[cfg(not(any(
261
278
target_os = "linux",
262
279
target_os = "freebsd",
263
280
target_os = "netbsd",
264
281
target_os = "macos",
265
282
target_os = "ios",
266
283
target_os = "tvos",
267
- target_os = "watchos"
284
+ target_os = "watchos",
285
+ target_os = "haiku"
268
286
)))]
269
287
pub fn get_name() -> Option<CString> {
270
288
None
You can’t perform that action at this time.
0 commit comments