File tree 1 file changed +19
-1
lines changed
library/std/src/sys/pal/unix
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