diff options
| author | Michael Dusan <michael.dusan@gmail.com> | 2021-10-07 14:31:05 -0400 |
|---|---|---|
| committer | Michael Dusan <michael.dusan@gmail.com> | 2021-10-09 03:52:28 -0400 |
| commit | d621f4322b351817b6fdb058b264adb329c54fdb (patch) | |
| tree | d1085492ea77c1a56f590340d2eebff944256463 /lib/std/Thread.zig | |
| parent | 601ac82041653adc2acbcfd947a54286944df9df (diff) | |
| download | zig-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.zig | 22 |
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, } } |
