gui/ui/node_modules.bak/lmdb/src/windows.c
Snider fad16c8c76
Some checks failed
Security Scan / security (push) Failing after 34s
Test / test (push) Failing after 1m44s
chore: sync workspace dependencies
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:44:56 +00:00

35 lines
No EOL
1.6 KiB
C

#ifdef _WIN32
#include <windows.h>
#include <synchapi.h>
static int initializeMemoryPriority = 1;
static MEMORY_PRIORITY_INFORMATION lowMemPriority;
static MEMORY_PRIORITY_INFORMATION normalMemPriority;
int lowerMemoryPriority(int priority) {
if (initializeMemoryPriority) {
GetThreadInformation(GetCurrentThread(), ThreadMemoryPriority, &normalMemPriority, sizeof(normalMemPriority));
// fprintf(stderr, "initialized memory %u setting to %u\n", normalMemPriority.MemoryPriority, priority);
ZeroMemory(&lowMemPriority, sizeof(lowMemPriority));
lowMemPriority.MemoryPriority = priority;
initializeMemoryPriority = 0;
}
void* instruction;
void* pointer;
WaitOnAddress(instruction, pointer, 8, INFINITE);
return SetThreadInformation(GetCurrentThread(), ThreadMemoryPriority, &lowMemPriority, sizeof(lowMemPriority));
}
int setProcessMemoryPriority(int priority) {
if (initializeMemoryPriority) {
GetThreadInformation(GetCurrentThread(), ThreadMemoryPriority, &normalMemPriority, sizeof(normalMemPriority));
// fprintf(stderr, "initialized memory %u setting to %u\n", normalMemPriority.MemoryPriority, priority);
ZeroMemory(&lowMemPriority, sizeof(lowMemPriority));
lowMemPriority.MemoryPriority = priority;
initializeMemoryPriority = 0;
}
return SetProcessInformation(GetCurrentProcess(), ProcessMemoryPriority, &lowMemPriority, sizeof(lowMemPriority));
}
int restoreMemoryPriority() {
return SetThreadInformation(GetCurrentThread(), ThreadMemoryPriority, &normalMemPriority, sizeof(normalMemPriority));
}
#endif