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...@@ -179,10 +179,6 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co
179 else => |e| return os.unexpectedErrno(e),179 else => |e| return os.unexpectedErrno(e),
180 }180 }
181 } else {181 } 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 }
186 const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1);182 const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1);
187 switch (err) {183 switch (err) {
188 .SUCCESS => return std.mem.sliceTo(buffer, 0),184 .SUCCESS => return std.mem.sliceTo(buffer, 0),
...@@ -1133,16 +1129,7 @@ test "setName, getName" {...@@ -1133,16 +1129,7 @@ test "setName, getName" {
1133 error.Unsupported => return error.SkipZigTest,1129 error.Unsupported => return error.SkipZigTest,
1134 else => return err,1130 else => return err,
1135 },1131 },
1136 else => |tag| if (tag == .linux and use_pthreads and comptime target.abi.isMusl()) {1132 else => try testThreadName(&thread),
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 },
1146 }1133 }
11471134
1148 context.thread_done_event.set();1135 context.thread_done_event.set();