clean up and standardize types across the codebase, unify atomic operations, improve UTF-8 handling throughout the system, remove obsolete input and named queue interfaces, redesign process preparation and creation, tighten IPC and service boundaries, improve error handling and reliability, minor documentation cleanup, fix doom surfaces, fix panic in ini parsing.

This commit is contained in:
maksw committed 2026-10-12 18:17:43 +02:00
1 parent 899225f551
commit c0ad63c27f
226 files changed
+6562 -4147

No files matched your search

+20 -18
View File
@@ -1,5 +1,7 @@
// POSIX compatibility support for byte-stream file I/O.
#include <ntlite/atomic.h>
#include <stdbool.h>
#include <stddef.h>
#include <string.h>
#include <intrin.h>
@@ -38,16 +40,16 @@ static SYS_PIPE_SHARED_STATE* PosixPipeShared(POSIX_OPEN_DESCRIPTION* descriptio
}
// Acquires one shared pipe-side serialization lock without entering the kernel.
static void PosixPipeLock(volatile long* lock) {
while (_InterlockedCompareExchange(lock, 1, 0) != 0)
static void PosixPipeLock(volatile int32_t* lock) {
while (NtlAtomicCompareExchange32(lock, 1, 0) != 0)
_mm_pause();
_ReadWriteBarrier();
}
// Releases one shared pipe-side serialization lock.
static void PosixPipeUnlock(volatile long* lock) {
static void PosixPipeUnlock(volatile int32_t* lock) {
_ReadWriteBarrier();
_InterlockedExchange(lock, 0);
NtlAtomicExchange32(lock, 0);
}
// Returns buffered bytes, rejecting corrupted shared counters.
@@ -105,7 +107,7 @@ static ssize_t PosixPipeRead(POSIX_OPEN_DESCRIPTION* description, void* buffer,
_ReadWriteBarrier();
shared->ReadPosition = readPosition + transfer;
_ReadWriteBarrier();
long writeWaiters = shared->WriteWaiters;
int32_t writeWaiters = shared->WriteWaiters;
PosixPipeUnlock(&shared->ReadLock);
if (writeWaiters != 0)
(void)SysNotifyPipe(description->KHandle);
@@ -124,7 +126,7 @@ static ssize_t PosixPipeRead(POSIX_OPEN_DESCRIPTION* description, void* buffer,
POSIX_THREAD_STATE* thread = PosixRuntimeThreadState();
uint64_t deliveryCount = thread ? thread->SignalDeliveryCount : 0;
uint32_t status = SysWait(description->KHandle, SYS_WAIT_FLAG_ALERTABLE);
KSTATUS status = SysWait(description->KHandle, SYS_WAIT_FLAG_ALERTABLE);
if (status == NTLSTATUS_USER_APC || status == NTLSTATUS_KERNEL_APC ||
status == NTLSTATUS_ALERTED) {
if (!thread || thread->SignalDeliveryCount == deliveryCount)
@@ -173,7 +175,7 @@ static ssize_t PosixPipeWrite(POSIX_OPEN_DESCRIPTION* description, const void* b
_ReadWriteBarrier();
shared->WritePosition = writePosition + transfer;
_ReadWriteBarrier();
long readWaiters = shared->ReadWaiters;
int32_t readWaiters = shared->ReadWaiters;
PosixPipeUnlock(&shared->WriteLock);
if (readWaiters != 0)
(void)SysNotifyPipe(description->KHandle);
@@ -189,7 +191,7 @@ static ssize_t PosixPipeWrite(POSIX_OPEN_DESCRIPTION* description, const void* b
POSIX_THREAD_STATE* thread = PosixRuntimeThreadState();
uint64_t deliveryCount = thread ? thread->SignalDeliveryCount : 0;
uint32_t status = SysWait(description->KHandle, SYS_WAIT_FLAG_ALERTABLE);
KSTATUS status = SysWait(description->KHandle, SYS_WAIT_FLAG_ALERTABLE);
if (status == NTLSTATUS_USER_APC || status == NTLSTATUS_KERNEL_APC ||
status == NTLSTATUS_ALERTED) {
if (!thread || thread->SignalDeliveryCount == deliveryCount)
@@ -251,7 +253,7 @@ __declspec(dllexport) int open(const char* path, int flags, ...) {
else if (flags & O_TRUNC)
disposition = SYS_FILE_TRUNCATE_EXISTING;
uint32_t status = NtlOpenFile(SysSvFromCstr(p), access, disposition,
KSTATUS status = NtlOpenFile(SysSvFromCstr(p), access, disposition,
SYS_FILE_FLAG_NONE, &kh);
if (status != NTLSTATUS_SUCCESS) {
errno = PosixStatusToErrno(status);
@@ -288,7 +290,7 @@ __declspec(dllexport) ssize_t read(int fd, void* buf, size_t count) {
char* dst = (char*)buf;
result = (ssize_t)count;
for (size_t i = 0; i < count; i++) {
uint32_t status = NtlConsoleReadCharacter(SYS_HANDLE_INVALID, &dst[i]);
KSTATUS status = NtlConsoleReadCharacter(SYS_HANDLE_INVALID, &dst[i]);
if (status != NTLSTATUS_SUCCESS) {
errno = PosixStatusToErrno(status);
result = -1;
@@ -312,7 +314,7 @@ __declspec(dllexport) ssize_t read(int fd, void* buf, size_t count) {
size_t got = 0;
SYS_FILE_IO_REQUEST request =
SysMakeFileIoRequest(description->KHandle, buf, count, &got);
uint32_t status = SysReadFile(&request);
KSTATUS status = SysReadFile(&request);
if (status != NTLSTATUS_SUCCESS && got == 0)
errno = PosixStatusToErrno(status);
else
@@ -328,7 +330,7 @@ __declspec(dllexport) ssize_t read(int fd, void* buf, size_t count) {
sizeof(SYS_SOCKET_RECV_REQUEST), description->KHandle, 0,
buf, count, &got
};
uint32_t status = SysRecvSocket(&request);
KSTATUS status = SysRecvSocket(&request);
if (status != NTLSTATUS_SUCCESS)
errno = PosixStatusToErrno(status);
else
@@ -366,7 +368,7 @@ __declspec(dllexport) ssize_t write(int fd, const void* buf, size_t count) {
switch (description->Type) {
case PosixFdConsoleWrite: {
size_t written = 0;
uint32_t status = NtlConsoleWrite(SYS_HANDLE_INVALID, buf, count, &written);
KSTATUS status = NtlConsoleWrite(SYS_HANDLE_INVALID, buf, count, &written);
if (status != NTLSTATUS_SUCCESS && written == 0)
errno = PosixStatusToErrno(status);
else
@@ -381,7 +383,7 @@ __declspec(dllexport) ssize_t write(int fd, const void* buf, size_t count) {
size_t written = 0;
SYS_FILE_IO_REQUEST request =
SysMakeFileIoRequest(description->KHandle, (void*)buf, count, &written);
uint32_t status = SysWriteFile(&request);
KSTATUS status = SysWriteFile(&request);
if (status != NTLSTATUS_SUCCESS && written == 0)
errno = PosixStatusToErrno(status);
else
@@ -397,7 +399,7 @@ __declspec(dllexport) ssize_t write(int fd, const void* buf, size_t count) {
sizeof(SYS_SOCKET_SEND_REQUEST), description->KHandle, 0,
buf, count, &sent
};
uint32_t status = SysSendSocket(&request);
KSTATUS status = SysSendSocket(&request);
if (status != NTLSTATUS_SUCCESS)
errno = PosixStatusToErrno(status);
else
@@ -452,7 +454,7 @@ __declspec(dllexport) int pipe(int pipefd[2]) {
SYS_PIPE_SHARED_STATE* pipeShared = readShared ?
(SYS_PIPE_SHARED_STATE*)(uintptr_t)readShared->SharedObjectData :
(SYS_PIPE_SHARED_STATE*)0;
int valid = handles[0] != SYS_HANDLE_INVALID && handles[1] != SYS_HANDLE_INVALID &&
bool valid = handles[0] != SYS_HANDLE_INVALID && handles[1] != SYS_HANDLE_INVALID &&
reply.OpenDescriptionId != 0 && reply.OpenDescriptionId2 != 0 &&
reply.OpenDescriptionId != reply.OpenDescriptionId2 &&
reply.OpenDescriptionType == NTL_POSIX_OPEN_TYPE_PIPE_READ &&
@@ -518,7 +520,7 @@ __declspec(dllexport) int unlink(const char* path) {
return -1;
}
uint32_t status = NtlDeleteFile(SysSvFromCstr(p));
KSTATUS status = NtlDeleteFile(SysSvFromCstr(p));
if (status != NTLSTATUS_SUCCESS) {
errno = PosixStatusToErrno(status);
return -1;
@@ -538,7 +540,7 @@ __declspec(dllexport) off_t lseek(int fd, off_t offset, int whence) {
}
int64_t target = 0;
uint32_t status = NTLSTATUS_SUCCESS;
KSTATUS status = NTLSTATUS_SUCCESS;
if (whence == SEEK_SET) {
target = (int64_t)offset;
} else if (whence == SEEK_CUR) {