aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Thread.zig
diff options
context:
space:
mode:
authorMichael Dusan <michael.dusan@gmail.com>2021-10-07 14:31:05 -0400
committerMichael Dusan <michael.dusan@gmail.com>2021-10-09 03:52:28 -0400
commitd621f4322b351817b6fdb058b264adb329c54fdb (patch)
treed1085492ea77c1a56f590340d2eebff944256463 /lib/std/Thread.zig
parent601ac82041653adc2acbcfd947a54286944df9df (diff)
downloadzig-d621f4322b351817b6fdb058b264adb329c54fdb.tar.gz
zig-d621f4322b351817b6fdb058b264adb329c54fdb.zip
dragonfly: port std.Thread.setname/getname
Diffstat (limited to 'lib/std/Thread.zig')
-rw-r--r--lib/std/Thread.zig22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/std/Thread.zig b/lib/std/Thread.zig
index ae3a3e9d9e..1b91ab597b 100644
--- a/lib/std/Thread.zig
+++ b/lib/std/Thread.zig
@@ -41,6 +41,7 @@ pub const max_name_len = switch (target.os.tag) {
.netbsd => 31,
.freebsd => 15,
.openbsd => 31,
+ .dragonfly => 1023,
.solaris => 31,
else => 0,
};
@@ -130,6 +131,17 @@ pub fn setName(self: Thread, name: []const u8) SetNameError!void {
std.c.pthread_set_name_np(self.getHandle(), name_with_terminator.ptr);
},
+ .dragonfly => if (use_pthreads) {
+ const err = std.c.pthread_setname_np(self.getHandle(), name_with_terminator.ptr);
+ switch (err) {
+ .SUCCESS => return,
+ .INVAL => unreachable,
+ .FAULT => unreachable,
+ .NAMETOOLONG => unreachable, // already checked
+ .SRCH => unreachable,
+ else => |e| return os.unexpectedErrno(e),
+ }
+ },
else => return error.Unsupported,
}
}
@@ -219,6 +231,16 @@ pub fn getName(self: Thread, buffer_ptr: *[max_name_len:0]u8) GetNameError!?[]co
std.c.pthread_get_name_np(self.getHandle(), buffer.ptr, max_name_len + 1);
return std.mem.sliceTo(buffer, 0);
},
+ .dragonfly => if (use_pthreads) {
+ const err = std.c.pthread_getname_np(self.getHandle(), buffer.ptr, max_name_len + 1);
+ switch (err) {
+ .SUCCESS => return std.mem.sliceTo(buffer, 0),
+ .INVAL => unreachable,
+ .FAULT => unreachable,
+ .SRCH => unreachable,
+ else => |e| return os.unexpectedErrno(e),
+ }
+ },
else => return error.Unsupported,
}
}