From 944396128ba02d2a0fae0fda43be8f43d5e3a48a Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:06:55 -0800 Subject: [PATCH 01/11] add get core count --- core/os/os_darwin.odin | 12 ++++++++++ core/os/os_freebsd.odin | 13 ++++++++++ core/os/os_linux.odin | 5 ++++ core/os/os_windows.odin | 24 ++++++++++++++++++- core/sys/windows/kernel32.odin | 44 ++++++++++++++++++++++++++++++++++ 5 files changed, 97 insertions(+), 1 deletion(-) diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin index b40edb410..940003027 100644 --- a/core/os/os_darwin.odin +++ b/core/os/os_darwin.odin @@ -314,6 +314,7 @@ foreign libc { @(link_name="realpath") _unix_realpath :: proc(path: cstring, resolved_path: rawptr) -> rawptr --- @(link_name="strerror") _darwin_string_error :: proc(num : c.int) -> cstring --- + @(link_name="sysctlbyname") _sysctlbyname :: proc(path: cstring, oldp: rawptr, oldlenp: rawptr, newp: rawptr, newlen: int) -> c.int --- @(link_name="exit") _unix_exit :: proc(status: c.int) -> ! --- } @@ -771,6 +772,17 @@ get_page_size :: proc() -> int { return page_size } +get_processor_thread_count :: proc() -> int { + count : int = 0 + count_size := size_of(count) + if _sysctlbyname("hw.logicalcpu", rawptr(count), rawptr(count_size), 0, 0) == 0 { + if count > 0 { + return count + } + } + + return 1 +} _alloc_command_line_arguments :: proc() -> []string { res := make([]string, len(runtime.args__)) diff --git a/core/os/os_freebsd.odin b/core/os/os_freebsd.odin index 2a0381a5d..1e2e33810 100644 --- a/core/os/os_freebsd.odin +++ b/core/os/os_freebsd.odin @@ -287,6 +287,7 @@ foreign libc { @(link_name="getenv") _unix_getenv :: proc(cstring) -> cstring --- @(link_name="realpath") _unix_realpath :: proc(path: cstring, resolved_path: rawptr) -> rawptr --- + @(link_name="sysctlbyname") _sysctlbyname :: proc(path: cstring, oldp: rawptr, oldlenp: rawptr, newp: rawptr, newlen: int) -> c.int --- @(link_name="exit") _unix_exit :: proc(status: c.int) -> ! --- } @@ -702,6 +703,18 @@ get_page_size :: proc() -> int { return page_size } +get_processor_thread_count :: proc() -> int { + count : int = 0 + count_size := size_of(count) + if _sysctlbyname("hw.logicalcpu", rawptr(count), rawptr(count_size), 0, 0) == 0 { + if count > 0 { + return count + } + } + + return 1 +} + _alloc_command_line_arguments :: proc() -> []string { res := make([]string, len(runtime.args__)) diff --git a/core/os/os_linux.odin b/core/os/os_linux.odin index ac40b8cde..acc0d3e1b 100644 --- a/core/os/os_linux.odin +++ b/core/os/os_linux.odin @@ -404,6 +404,7 @@ foreign libc { @(link_name="__errno_location") __errno_location :: proc() -> ^int --- @(link_name="getpagesize") _unix_getpagesize :: proc() -> c.int --- + @(link_name="get_nprocs") _unix_get_nprocs :: proc() -> c.int --- @(link_name="fdopendir") _unix_fdopendir :: proc(fd: Handle) -> Dir --- @(link_name="closedir") _unix_closedir :: proc(dirp: Dir) -> c.int --- @(link_name="rewinddir") _unix_rewinddir :: proc(dirp: Dir) --- @@ -878,6 +879,10 @@ get_page_size :: proc() -> int { return page_size } +get_processor_thread_count :: proc() -> int { + thread_count := int(_unix_get_nprocs()) + return thread_count +} _alloc_command_line_arguments :: proc() -> []string { res := make([]string, len(runtime.args__)) diff --git a/core/os/os_windows.odin b/core/os/os_windows.odin index f48f46fa3..cc01f8cca 100644 --- a/core/os/os_windows.odin +++ b/core/os/os_windows.odin @@ -126,6 +126,28 @@ get_page_size :: proc() -> int { return page_size } +get_processor_thread_count :: proc() -> int { + length : c.int = 0 + result := windows.GetLogicalProcessorInformation(nil, &length) + + thread_count := 0 + if !result && win32.GetLastError() == 122 && length > 0 { + processors := make([]windows.SYSTEM_LOGICAL_PROCESSOR_INFORMATION, length, context.temp_allocator) + + result = windows.GetLogicalProcessorInformation(&processors[0], &length) + if result { + core_count := 0 + for processor in processors { + if processor.Relationship == windows.RelationProcessorCore { + thread := intrinsics.count_ones(processor.ProcessorMask) + thread_count += thread + } + } + } + } + + return thread_count +} exit :: proc "contextless" (code: int) -> ! { @@ -214,4 +236,4 @@ is_windows_10 :: proc() -> bool { is_windows_11 :: proc() -> bool { osvi := get_windows_version_w() return (osvi.dwMajorVersion == 10 && osvi.dwMinorVersion == 0 && osvi.dwBuildNumber >= WINDOWS_11_BUILD_CUTOFF) -} \ No newline at end of file +} diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 3eb42a3ad..1b7e8d397 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -370,6 +370,8 @@ foreign kernel32 { lpTotalNumberOfBytes: PULARGE_INTEGER, lpTotalNumberOfFreeBytes: PULARGE_INTEGER, ) -> BOOL --- + + GetLogicalProcessorInformation :: proc(buffer: ^LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL --- } @@ -999,3 +1001,45 @@ foreign kernel32 { ConvertThreadToFiber :: proc(lpParameter: LPVOID) -> LPVOID --- SwitchToFiber :: proc(lpFiber: LPVOID) --- } + +LOGICAL_PROCESSOR_RELATIONSHIP :: enum c_int { + RelationProcessorCore, + RelationNumaNode, + RelationCache, + RelationProcessorPackage, + RelationGroup, + RelationProcessorDie, + RelationNumaNodeEx, + RelationProcessorModule, + RelationAll = 0xffff, +} + +PROCESSOR_CACHE_TYPE :: enum c_int { + CacheUnified, + CacheInstruction, + CacheData, + CacheTrace, +} + +CACHE_DESCRIPTOR :: struct { + Level: BYTE, + Associativity: BYTE, + LineSize: WORD, + Size: DWORD, + Type: PROCESSOR_CACHE_TYPE, +} + +SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { + ProcessorMask: ULONGPTR, + Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, + DUMMYUNIONNAME :: union { + ProcessorCore :: struct { + Flags: BYTE, + }, + NumaNode :: struct { + NodeNumber: DWORD, + }, + Cache: CACHE_DESCRIPTOR, + Reserved: [2]ULONGLONG, + }, +} From 8f39c45e9b6698f724a8045b68372b1098c6595d Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:11:46 -0800 Subject: [PATCH 02/11] use raw_union? --- core/sys/windows/kernel32.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 1b7e8d397..27a3330f6 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -1032,7 +1032,7 @@ CACHE_DESCRIPTOR :: struct { SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { ProcessorMask: ULONGPTR, Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, - DUMMYUNIONNAME :: union { + DUMMYUNIONNAME :: struct #raw_union { ProcessorCore :: struct { Flags: BYTE, }, From 0484bdbb7edd9fecddcf2befbeae46946156a363 Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:14:51 -0800 Subject: [PATCH 03/11] fix darwin/freebsd --- core/os/os_darwin.odin | 2 +- core/os/os_freebsd.odin | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin index 940003027..6e25af347 100644 --- a/core/os/os_darwin.odin +++ b/core/os/os_darwin.odin @@ -775,7 +775,7 @@ get_page_size :: proc() -> int { get_processor_thread_count :: proc() -> int { count : int = 0 count_size := size_of(count) - if _sysctlbyname("hw.logicalcpu", rawptr(count), rawptr(count_size), 0, 0) == 0 { + if _sysctlbyname("hw.logicalcpu", &count, &count_size, nil, 0) == 0 { if count > 0 { return count } diff --git a/core/os/os_freebsd.odin b/core/os/os_freebsd.odin index 1e2e33810..e204227fa 100644 --- a/core/os/os_freebsd.odin +++ b/core/os/os_freebsd.odin @@ -706,7 +706,7 @@ get_page_size :: proc() -> int { get_processor_thread_count :: proc() -> int { count : int = 0 count_size := size_of(count) - if _sysctlbyname("hw.logicalcpu", rawptr(count), rawptr(count_size), 0, 0) == 0 { + if _sysctlbyname("hw.logicalcpu", &count, &count_size, nil, 0) == 0 { if count > 0 { return count } From cb7dd12222c73c8f921385126f12005ea5b8310a Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:18:44 -0800 Subject: [PATCH 04/11] name raw union --- core/sys/windows/kernel32.odin | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 27a3330f6..56b63a494 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -1029,17 +1029,18 @@ CACHE_DESCRIPTOR :: struct { Type: PROCESSOR_CACHE_TYPE, } +DUMMYUNIONNAME_u :: struct #raw_union { + ProcessorCore :: struct { + Flags: BYTE, + }, + NumaNode :: struct { + NodeNumber: DWORD, + }, + Cache: CACHE_DESCRIPTOR, + Reserved: [2]ULONGLONG, +}, SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { ProcessorMask: ULONGPTR, Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, - DUMMYUNIONNAME :: struct #raw_union { - ProcessorCore :: struct { - Flags: BYTE, - }, - NumaNode :: struct { - NodeNumber: DWORD, - }, - Cache: CACHE_DESCRIPTOR, - Reserved: [2]ULONGLONG, - }, + DummyUnion: DUMMYUNIONNAME_u, } From b22ddb1453c549db951e5cd58e2d50eab3941be0 Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:25:18 -0800 Subject: [PATCH 05/11] fix windows structs --- core/sys/windows/kernel32.odin | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 56b63a494..7df777da3 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -1029,16 +1029,19 @@ CACHE_DESCRIPTOR :: struct { Type: PROCESSOR_CACHE_TYPE, } +ProcessorCore :: struct { + Flags: BYTE, +} +NumaNode :: struct { + NodeNumber: DWORD, +} DUMMYUNIONNAME_u :: struct #raw_union { - ProcessorCore :: struct { - Flags: BYTE, - }, - NumaNode :: struct { - NodeNumber: DWORD, - }, + Core: ProcessorCore, + Node: NumaNode, Cache: CACHE_DESCRIPTOR, Reserved: [2]ULONGLONG, -}, +} + SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { ProcessorMask: ULONGPTR, Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, From b455ccd2617c91dfa24367abb9b30d2560cf3e57 Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:37:50 -0800 Subject: [PATCH 06/11] fix more things? --- core/os/os_windows.odin | 8 ++++---- core/sys/windows/kernel32.odin | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/os/os_windows.odin b/core/os/os_windows.odin index cc01f8cca..2bca2fc95 100644 --- a/core/os/os_windows.odin +++ b/core/os/os_windows.odin @@ -3,6 +3,7 @@ package os import win32 "core:sys/windows" import "core:runtime" +import "core:intrinsics" Handle :: distinct uintptr File_Time :: distinct u64 @@ -128,15 +129,14 @@ get_page_size :: proc() -> int { get_processor_thread_count :: proc() -> int { length : c.int = 0 - result := windows.GetLogicalProcessorInformation(nil, &length) + result := win32.GetLogicalProcessorInformation(nil, &length) thread_count := 0 if !result && win32.GetLastError() == 122 && length > 0 { - processors := make([]windows.SYSTEM_LOGICAL_PROCESSOR_INFORMATION, length, context.temp_allocator) + processors := make([]win32.SYSTEM_LOGICAL_PROCESSOR_INFORMATION, length, context.temp_allocator) - result = windows.GetLogicalProcessorInformation(&processors[0], &length) + result = win32.GetLogicalProcessorInformation(&processors[0], &length) if result { - core_count := 0 for processor in processors { if processor.Relationship == windows.RelationProcessorCore { thread := intrinsics.count_ones(processor.ProcessorMask) diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 7df777da3..2a74ea44e 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -371,7 +371,7 @@ foreign kernel32 { lpTotalNumberOfFreeBytes: PULARGE_INTEGER, ) -> BOOL --- - GetLogicalProcessorInformation :: proc(buffer: ^LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL --- + GetLogicalProcessorInformation :: proc(buffer: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION, returnedLength: PDWORD) -> BOOL --- } From 50a2493fd38068cb1030860795f2612a98a9b482 Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Thu, 5 Jan 2023 01:48:00 -0800 Subject: [PATCH 07/11] add get thread count to openbsd --- core/os/os_openbsd.odin | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/core/os/os_openbsd.odin b/core/os/os_openbsd.odin index 0375107ca..139d257a5 100644 --- a/core/os/os_openbsd.odin +++ b/core/os/os_openbsd.odin @@ -269,6 +269,7 @@ foreign libc { @(link_name="mkdir") _unix_mkdir :: proc(path: cstring, mode: mode_t) -> c.int --- @(link_name="getpagesize") _unix_getpagesize :: proc() -> c.int --- + @(link_name="sysconf") _sysconf :: proc(name: c.int) -> c.long --- @(link_name="fdopendir") _unix_fdopendir :: proc(fd: Handle) -> Dir --- @(link_name="closedir") _unix_closedir :: proc(dirp: Dir) -> c.int --- @(link_name="rewinddir") _unix_rewinddir :: proc(dirp: Dir) --- @@ -704,6 +705,11 @@ get_page_size :: proc() -> int { return page_size } +_SC_NPROCESSORS_ONLN :: 503 +get_processor_thread_count :: proc() -> int { + thread_count := int(_sysconf(_SC_NPROCESSORS_ONLN)) + return thread_count +} _alloc_command_line_arguments :: proc() -> []string { res := make([]string, len(runtime.args__)) @@ -711,4 +717,4 @@ _alloc_command_line_arguments :: proc() -> []string { res[i] = string(arg) } return res -} \ No newline at end of file +} From 6ff2db47b4953c0f2332740e22888b7b1dabe92b Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Fri, 6 Jan 2023 13:33:47 -0800 Subject: [PATCH 08/11] shuffle to private/public wrapper --- core/os/os.odin | 4 ++++ core/os/os_darwin.odin | 3 ++- core/os/os_freebsd.odin | 3 ++- core/os/os_linux.odin | 6 +++--- core/os/os_openbsd.odin | 7 ++++--- core/os/os_wasi.odin | 5 ++++- core/os/os_windows.odin | 4 ++-- 7 files changed, 21 insertions(+), 11 deletions(-) diff --git a/core/os/os.odin b/core/os/os.odin index dd20de17c..e77bf499d 100644 --- a/core/os/os.odin +++ b/core/os/os.odin @@ -261,3 +261,7 @@ heap_allocator :: proc() -> mem.Allocator { data = nil, } } + +processor_core_count :: proc() -> int { + return _processor_core_count() +} diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin index 6e25af347..456ac1d76 100644 --- a/core/os/os_darwin.odin +++ b/core/os/os_darwin.odin @@ -772,7 +772,8 @@ get_page_size :: proc() -> int { return page_size } -get_processor_thread_count :: proc() -> int { +@(private) +_processor_core_count :: proc() -> int { count : int = 0 count_size := size_of(count) if _sysctlbyname("hw.logicalcpu", &count, &count_size, nil, 0) == 0 { diff --git a/core/os/os_freebsd.odin b/core/os/os_freebsd.odin index e204227fa..eacbae97a 100644 --- a/core/os/os_freebsd.odin +++ b/core/os/os_freebsd.odin @@ -703,7 +703,8 @@ get_page_size :: proc() -> int { return page_size } -get_processor_thread_count :: proc() -> int { +@(private) +_processor_core_count :: proc() -> int { count : int = 0 count_size := size_of(count) if _sysctlbyname("hw.logicalcpu", &count, &count_size, nil, 0) == 0 { diff --git a/core/os/os_linux.odin b/core/os/os_linux.odin index acc0d3e1b..6f2196504 100644 --- a/core/os/os_linux.odin +++ b/core/os/os_linux.odin @@ -879,9 +879,9 @@ get_page_size :: proc() -> int { return page_size } -get_processor_thread_count :: proc() -> int { - thread_count := int(_unix_get_nprocs()) - return thread_count +@(private) +_processor_core_count :: proc() -> int { + return int(_unix_get_nprocs()) } _alloc_command_line_arguments :: proc() -> []string { diff --git a/core/os/os_openbsd.odin b/core/os/os_openbsd.odin index 139d257a5..3423c1692 100644 --- a/core/os/os_openbsd.odin +++ b/core/os/os_openbsd.odin @@ -706,9 +706,10 @@ get_page_size :: proc() -> int { } _SC_NPROCESSORS_ONLN :: 503 -get_processor_thread_count :: proc() -> int { - thread_count := int(_sysconf(_SC_NPROCESSORS_ONLN)) - return thread_count + +@(private) +_processor_core_count :: proc() -> int { + return int(_sysconf(_SC_NPROCESSORS_ONLN)) } _alloc_command_line_arguments :: proc() -> []string { diff --git a/core/os/os_wasi.odin b/core/os/os_wasi.odin index 70f7481f0..c407acdb4 100644 --- a/core/os/os_wasi.odin +++ b/core/os/os_wasi.odin @@ -89,7 +89,10 @@ seek :: proc(fd: Handle, offset: i64, whence: int) -> (i64, Errno) { current_thread_id :: proc "contextless" () -> int { return 0 } - +@(private) +_processor_core_count :: proc() -> int { + return 1 +} file_size :: proc(fd: Handle) -> (i64, Errno) { stat, err := wasi.fd_filestat_get(wasi.fd_t(fd)) diff --git a/core/os/os_windows.odin b/core/os/os_windows.odin index 2bca2fc95..45be28e9f 100644 --- a/core/os/os_windows.odin +++ b/core/os/os_windows.odin @@ -127,7 +127,8 @@ get_page_size :: proc() -> int { return page_size } -get_processor_thread_count :: proc() -> int { +@(private) +_processor_core_count :: proc() -> int { length : c.int = 0 result := win32.GetLogicalProcessorInformation(nil, &length) @@ -149,7 +150,6 @@ get_processor_thread_count :: proc() -> int { return thread_count } - exit :: proc "contextless" (code: int) -> ! { runtime._cleanup_runtime_contextless() win32.ExitProcess(win32.DWORD(code)) From 171d5b4012e429cf4f341cf6b5f8020cbad8820b Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Fri, 6 Jan 2023 13:45:21 -0800 Subject: [PATCH 09/11] more windows kerfuffle --- core/os/os_windows.odin | 3 ++- core/sys/windows/kernel32.odin | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/os/os_windows.odin b/core/os/os_windows.odin index 45be28e9f..aef7d44d5 100644 --- a/core/os/os_windows.odin +++ b/core/os/os_windows.odin @@ -4,6 +4,7 @@ package os import win32 "core:sys/windows" import "core:runtime" import "core:intrinsics" +import "core:c" Handle :: distinct uintptr File_Time :: distinct u64 @@ -139,7 +140,7 @@ _processor_core_count :: proc() -> int { result = win32.GetLogicalProcessorInformation(&processors[0], &length) if result { for processor in processors { - if processor.Relationship == windows.RelationProcessorCore { + if processor.Relationship == win32.RelationProcessorCore { thread := intrinsics.count_ones(processor.ProcessorMask) thread_count += thread } diff --git a/core/sys/windows/kernel32.odin b/core/sys/windows/kernel32.odin index 2a74ea44e..6def41c5d 100644 --- a/core/sys/windows/kernel32.odin +++ b/core/sys/windows/kernel32.odin @@ -1043,7 +1043,7 @@ DUMMYUNIONNAME_u :: struct #raw_union { } SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct { - ProcessorMask: ULONGPTR, + ProcessorMask: ULONG_PTR, Relationship: LOGICAL_PROCESSOR_RELATIONSHIP, DummyUnion: DUMMYUNIONNAME_u, } From a36640bcfc7b0b113f031e37e6aad19c8505d37f Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Fri, 6 Jan 2023 13:51:25 -0800 Subject: [PATCH 10/11] more windows fixes --- core/os/os_windows.odin | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/os/os_windows.odin b/core/os/os_windows.odin index aef7d44d5..ba49db1a8 100644 --- a/core/os/os_windows.odin +++ b/core/os/os_windows.odin @@ -130,7 +130,7 @@ get_page_size :: proc() -> int { @(private) _processor_core_count :: proc() -> int { - length : c.int = 0 + length : win32.DWORD = 0 result := win32.GetLogicalProcessorInformation(nil, &length) thread_count := 0 @@ -140,9 +140,9 @@ _processor_core_count :: proc() -> int { result = win32.GetLogicalProcessorInformation(&processors[0], &length) if result { for processor in processors { - if processor.Relationship == win32.RelationProcessorCore { + if processor.Relationship == .RelationProcessorCore { thread := intrinsics.count_ones(processor.ProcessorMask) - thread_count += thread + thread_count += int(thread) } } } From 3935957979db0824a6ca45765d518a11fb2431cd Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Fri, 6 Jan 2023 13:53:32 -0800 Subject: [PATCH 11/11] remove unused c import --- core/os/os_windows.odin | 1 - 1 file changed, 1 deletion(-) diff --git a/core/os/os_windows.odin b/core/os/os_windows.odin index ba49db1a8..f6d8b3997 100644 --- a/core/os/os_windows.odin +++ b/core/os/os_windows.odin @@ -4,7 +4,6 @@ package os import win32 "core:sys/windows" import "core:runtime" import "core:intrinsics" -import "core:c" Handle :: distinct uintptr File_Time :: distinct u64