aboutsummaryrefslogtreecommitdiff
path: root/lib/std/os
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-07-29 13:25:13 -0400
committerGitHub <noreply@github.com>2021-07-29 13:25:13 -0400
commit192b5d24cb4651ed2c6b6b1e5fee017d40ea5aa5 (patch)
treec98d0f66679a0d47ede96ce3acefcb224b1eb172 /lib/std/os
parented174b7386cb5a6f2008cb6a25c3ff684645d847 (diff)
parentdf4fe8716374e4cfdf1dee2bbcda7969eb6d057a (diff)
downloadzig-192b5d24cb4651ed2c6b6b1e5fee017d40ea5aa5.tar.gz
zig-192b5d24cb4651ed2c6b6b1e5fee017d40ea5aa5.zip
Merge pull request #8570 from vrischmann/thread-name
add Thread.setName and Thread.getName
Diffstat (limited to 'lib/std/os')
-rw-r--r--lib/std/os/windows.zig19
-rw-r--r--lib/std/os/windows/kernel32.zig5
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/std/os/windows.zig b/lib/std/os/windows.zig
index cbd4ce065b..04ce433758 100644
--- a/lib/std/os/windows.zig
+++ b/lib/std/os/windows.zig
@@ -1631,6 +1631,10 @@ pub fn HeapDestroy(hHeap: HANDLE) void {
assert(kernel32.HeapDestroy(hHeap) != 0);
}
+pub fn LocalFree(hMem: HLOCAL) void {
+ assert(kernel32.LocalFree(hMem) == null);
+}
+
pub const GetFileInformationByHandleError = error{Unexpected};
pub fn GetFileInformationByHandle(
@@ -2011,6 +2015,21 @@ pub fn unexpectedStatus(status: NTSTATUS) std.os.UnexpectedError {
return error.Unexpected;
}
+pub fn SetThreadDescription(hThread: HANDLE, lpThreadDescription: LPCWSTR) !void {
+ if (kernel32.SetThreadDescription(hThread, lpThreadDescription) == 0) {
+ switch (kernel32.GetLastError()) {
+ else => |err| return unexpectedError(err),
+ }
+ }
+}
+pub fn GetThreadDescription(hThread: HANDLE, ppszThreadDescription: *LPWSTR) !void {
+ if (kernel32.GetThreadDescription(hThread, ppszThreadDescription) == 0) {
+ switch (kernel32.GetLastError()) {
+ else => |err| return unexpectedError(err),
+ }
+ }
+}
+
test "" {
if (builtin.os.tag == .windows) {
_ = @import("windows/test.zig");
diff --git a/lib/std/os/windows/kernel32.zig b/lib/std/os/windows/kernel32.zig
index 971273ef3a..a04314324d 100644
--- a/lib/std/os/windows/kernel32.zig
+++ b/lib/std/os/windows/kernel32.zig
@@ -192,6 +192,8 @@ pub extern "kernel32" fn HeapValidate(hHeap: HANDLE, dwFlags: DWORD, lpMem: ?*co
pub extern "kernel32" fn VirtualAlloc(lpAddress: ?LPVOID, dwSize: SIZE_T, flAllocationType: DWORD, flProtect: DWORD) callconv(WINAPI) ?LPVOID;
pub extern "kernel32" fn VirtualFree(lpAddress: ?LPVOID, dwSize: SIZE_T, dwFreeType: DWORD) callconv(WINAPI) BOOL;
+pub extern "kernel32" fn LocalFree(hMem: HLOCAL) callconv(WINAPI) ?HLOCAL;
+
pub extern "kernel32" fn MoveFileExW(
lpExistingFileName: [*:0]const u16,
lpNewFileName: [*:0]const u16,
@@ -342,3 +344,6 @@ pub extern "kernel32" fn SleepConditionVariableSRW(
pub extern "kernel32" fn TryAcquireSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) BOOLEAN;
pub extern "kernel32" fn AcquireSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) void;
pub extern "kernel32" fn ReleaseSRWLockExclusive(s: *SRWLOCK) callconv(WINAPI) void;
+
+pub extern "kernel32" fn SetThreadDescription(hThread: HANDLE, lpThreadDescription: LPCWSTR) callconv(WINAPI) HRESULT;
+pub extern "kernel32" fn GetThreadDescription(hThread: HANDLE, ppszThreadDescription: *LPWSTR) callconv(WINAPI) HRESULT;