barriers, rawinput macros

This commit is contained in:
jakubtomsu
2025-10-16 15:59:22 +02:00
parent 4b8751bebd
commit 7d9f915ff9
4 changed files with 42 additions and 0 deletions

View File

@@ -213,6 +213,16 @@ foreign kernel32 {
) -> BOOL ---
WaitForSingleObject :: proc(hHandle: HANDLE, dwMilliseconds: DWORD) -> DWORD ---
WaitForSingleObjectEx :: proc(hHandle: HANDLE, dwMilliseconds: DWORD, bAlterable: BOOL) -> DWORD ---
EnterSynchronizationBarrier :: proc(
lpBarrier: ^SYNCHRONIZATION_BARRIER,
dwFlags: SYNCHRONIZATION_BARRIER_FLAGS,
) -> BOOL ---
InitializeSynchronizationBarrier :: proc(
lpBarrier: ^SYNCHRONIZATION_BARRIER,
lTotalThreads: LONG,
lSpinCount: LONG,
) -> BOOL ---
DeleteSynchronizationBarrier :: proc(lpBarrier: ^SYNCHRONIZATION_BARRIER) -> BOOL ---
Sleep :: proc(dwMilliseconds: DWORD) ---
GetProcessId :: proc(handle: HANDLE) -> DWORD ---
CopyFileW :: proc(

View File

@@ -2991,6 +2991,21 @@ CRITICAL_SECTION :: struct {
SpinCount: ULONG_PTR,
}
SYNCHRONIZATION_BARRIER :: struct {
Reserved1: DWORD,
Reserved2: DWORD,
Reserved3: [2]ULONG_PTR,
Reserved4: DWORD,
Reserved5: DWORD,
}
SYNCHRONIZATION_BARRIER_FLAG :: enum {
SPIN_ONLY = 0,
BLOCK_ONLY = 1,
NO_DELETE = 2,
}
SYNCHRONIZATION_BARRIER_FLAGS :: distinct bit_set[SYNCHRONIZATION_BARRIER_FLAG; DWORD]
REPARSE_MOUNTPOINT_DATA_BUFFER :: struct {
ReparseTag: DWORD,
ReparseDataLength: DWORD,

View File

@@ -398,6 +398,14 @@ MAKEINTRESOURCEW :: #force_inline proc "contextless" (#any_int i: int) -> LPWSTR
return cast(LPWSTR)uintptr(WORD(i))
}
RAWINPUT_ALIGN :: proc(x: uintptr) -> uintptr {
return (x + size_of(uintptr) - 1) & ~uintptr(size_of(uintptr) - 1)
}
NEXTRAWINPUTBLOCK :: proc(ptr: ^RAWINPUT) -> ^RAWINPUT {
return cast(^RAWINPUT)RAWINPUT_ALIGN(uintptr(ptr) + uintptr(ptr.header.dwSize))
}
Monitor_From_Flags :: enum DWORD {
MONITOR_DEFAULTTONULL = 0x00000000, // Returns NULL
MONITOR_DEFAULTTOPRIMARY = 0x00000001, // Returns a handle to the primary display monitor

9
test.odin Normal file
View File

@@ -0,0 +1,9 @@
package min_max_test
import "core:fmt"
main :: proc() {
a: f32 = max(1)
b: f32 = min(2)
fmt.println(a, b)
}