authorgravatar for r00ster91@proton.meWooster <r00ster91@proton.me> 2023-02-24 20:58:36+01:00
committergravatar for r00ster91@proton.meWooster <r00ster91@proton.me> 2023-02-26 00:15:46+01:00
log140ca67ea6d42d635c837558c075d8d9abd4e884
tree92da2459d2d96151e2577456043350df5d0ae27d
parentf10100cf9b3d6929f2ed2df64835b2773e117665

std.Thread: use pthread_getname_np on musl

Starting with version 1.2.3, musl now supports pthread_getname_np: https://github.com/bminor/musl/blob/7a43f6fea9081bdd53d8a11cef9e9fab0348c53d/WHATSNEW#L2293-L2329

1 files changed, 1 insertions(+), 14 deletions(-)

lib/std/Thread.zig+1-14
......@@ -179,10 +179,6 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co
179179 else => |e| return os.unexpectedErrno(e),
180180 }
181181 } else {
182 if (target.abi.isMusl()) {
183 // musl doesn't provide pthread_getname_np and there's no way to retrieve the thread id of an arbitrary thread.
184 return error.Unsupported;
185 }
186182 const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1);
187183 switch (err) {
188184 .SUCCESS => return std.mem.sliceTo(buffer, 0),
......@@ -1133,16 +1129,7 @@ test "setName, getName" {
11331129 error.Unsupported => return error.SkipZigTest,
11341130 else => return err,
11351131 },
1136 else => |tag| if (tag == .linux and use_pthreads and comptime target.abi.isMusl()) {
1137 try thread.setName("foobar");
1138
1139 var name_buffer: [max_name_len:0]u8 = undefined;
1140 const res = thread.getName(&name_buffer);
1141
1142 try std.testing.expectError(error.Unsupported, res);
1143 } else {
1144 try testThreadName(&thread);
1145 },
1132 else => try testThreadName(&thread),
11461133 }
11471134
11481135 context.thread_done_event.set();