replace nob with ms' build, move disk creation to build.bat, major comment cleanup, remove old and stupid tests, overhaul interrupt management with per-CPU vector allocation, affinity migration and safe teardown, add proper IOAPIC routing and PCI MSI/MSI-X/INTx support, migrate drivers to the new interrupt API, integrate ACPICA with a proper OS services layer, move ACPI firmware events, power button handling and S5 shutdown into acpi.sys, add parallel driver startup and atomic publication, replace PnP arrays with dynamic lists, redesign service startup again to be asynchronous, add delayed startup mode for services, allow omitting keys in services.ini, fix acpi ec deferred work handling, fix kernel threads having garbage exit code.

This commit is contained in:
maksw committed 2026-10-28 15:18:43 +01:00
1 parent d36f19509c
commit 36eef8f58d
696 files changed
+147281 -7530

No files matched your search

-27
View File
@@ -146,7 +146,6 @@ static NET_STACK_PROVIDER gLwipProvider = {
LwipProviderReceiveFrame,
};
// Implements the err To Status operation.
static KSTATUS LwipErrToStatus(err_t err) {
switch (err) {
case ERR_OK: return NTLSTATUS_SUCCESS;
@@ -167,7 +166,6 @@ static KSTATUS LwipErrToStatus(err_t err) {
}
}
// Implements the ascii Is Digit operation.
static bool LwipAsciiIsDigit(char c) {
return c >= '0' && c <= '9';
}
@@ -365,20 +363,17 @@ static KSTATUS LwipLoadNetifConfig(const NET_DEVICE* device, LWIP_NETIF_CONFIG*
return NTLSTATUS_SUCCESS;
}
// Implements the socket Lock operation.
static KSTATUS LwipSocketLock(LWIP_PROVIDER_SOCKET* s) {
if (!s || !s->Lock)
return NTLSTATUS_INVALID_PARAMETER;
return KeWaitSemaphore(s->Lock, KE_WAIT_INFINITE);
}
// Implements the socket Unlock operation.
static void LwipSocketUnlock(LWIP_PROVIDER_SOCKET* s) {
if (s && s->Lock)
KeSignalSemaphore(s->Lock);
}
// Implements the socket Callback operation.
static void LwipSocketCallback(struct netconn* conn, enum netconn_evt evt, u16_t len) {
(void)len;
if (!conn)
@@ -571,7 +566,6 @@ static bool LwipSocketFamilyMatches(const LWIP_PROVIDER_SOCKET* s, const SYS_SOC
return false;
}
// Implements the socket Make Ip operation.
static KSTATUS LwipSocketMakeIp(const SYS_SOCKET_ADDRESS_K* address, ip_addr_t* out) {
if (!address || !out)
return NTLSTATUS_INVALID_PARAMETER;
@@ -595,7 +589,6 @@ static KSTATUS LwipSocketMakeIp(const SYS_SOCKET_ADDRESS_K* address, ip_addr_t*
return NTLSTATUS_NOT_SUPPORTED;
}
// Implements the socket Fill Address operation.
static void LwipSocketFillAddress(SYS_SOCKET_ADDRESS_K* out, const ip_addr_t* ip, u16_t port) {
if (!out)
return;
@@ -624,7 +617,6 @@ static void LwipSocketFillAddress(SYS_SOCKET_ADDRESS_K* out, const ip_addr_t* ip
out->Address[3] = (uint8_t)ip4_addr4(ip_2_ip4(ip));
}
// Implements the low Level Output operation.
static err_t LwipLowLevelOutput(struct netif* netif, struct pbuf* p) {
LWIP_BINDING* b = (LWIP_BINDING*)netif->state;
if (!b || !b->Device || !p || p->tot_len < NET_ETHERNET_HEADER_LENGTH)
@@ -652,7 +644,6 @@ static err_t LwipLowLevelOutput(struct netif* netif, struct pbuf* p) {
return KSUCCESS(st) ? ERR_OK : ERR_IF;
}
// Implements the netif Init operation.
static err_t LwipNetifInit(struct netif* netif) {
LWIP_BINDING* b = (LWIP_BINDING*)netif->state;
if (!b || !b->Device)
@@ -773,7 +764,6 @@ static KSTATUS LwipDelayThread(uint64_t milliseconds) {
return KeDelayThread(milliseconds);
}
// Implements the stack Initialize operation.
static KSTATUS LwipStackInitialize(void) {
if (gLwipInitialized)
return NTLSTATUS_SUCCESS;
@@ -796,7 +786,6 @@ static KSTATUS LwipStackInitialize(void) {
return NTLSTATUS_SUCCESS;
}
// Implements the provider Attach Device operation.
static KSTATUS LwipProviderAttachDevice(NET_DEVICE* device) {
if (!gLwipInitialized)
return NTLSTATUS_NOT_SUPPORTED;
@@ -855,7 +844,6 @@ static KSTATUS LwipProviderAttachDevice(NET_DEVICE* device) {
return NTLSTATUS_SUCCESS;
}
// Implements the provider Receive Frame operation.
static KSTATUS LwipProviderReceiveFrame(NET_DEVICE* device, const void* frame, size_t length) {
if (!gLwipInitialized)
return NTLSTATUS_NOT_SUPPORTED;
@@ -889,7 +877,6 @@ static KSTATUS LwipProviderReceiveFrame(NET_DEVICE* device, const void* frame, s
return NTLSTATUS_SUCCESS;
}
// Implements the provider Socket Create operation.
static KSTATUS LwipProviderSocketCreate(uint32_t domain, uint32_t type, uint32_t protocol, void** outSocket) {
if (!outSocket)
return NTLSTATUS_INVALID_PARAMETER;
@@ -937,7 +924,6 @@ static KSTATUS LwipProviderSocketCreate(uint32_t domain, uint32_t type, uint32_t
return NTLSTATUS_SUCCESS;
}
// Implements the provider Socket Close operation.
static void LwipProviderSocketClose(void* socket) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s)
@@ -964,7 +950,6 @@ static void LwipProviderSocketClose(void* socket) {
MmFreePool(s);
}
// Implements the provider Bind operation.
static KSTATUS LwipProviderBind(void* socket, const SYS_SOCKET_ADDRESS_K* address, size_t addressSize) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s || !address)
@@ -999,7 +984,6 @@ static KSTATUS LwipProviderBind(void* socket, const SYS_SOCKET_ADDRESS_K* addres
return LwipErrToStatus(err);
}
// Implements the provider Listen operation.
static KSTATUS LwipProviderListen(void* socket, uint32_t backlog) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s)
@@ -1028,7 +1012,6 @@ static KSTATUS LwipProviderListen(void* socket, uint32_t backlog) {
return LwipErrToStatus(err);
}
// Implements the provider Accept operation.
static KSTATUS LwipProviderAccept(void* socket, void** acceptedOut, SYS_SOCKET_ADDRESS_K* remoteOut, volatile uint8_t* cancelRequested) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s || !acceptedOut)
@@ -1087,7 +1070,6 @@ static KSTATUS LwipProviderAccept(void* socket, void** acceptedOut, SYS_SOCKET_A
return NTLSTATUS_SUCCESS;
}
// Implements the provider Connect operation.
static KSTATUS LwipProviderConnect(void* socket, const SYS_SOCKET_ADDRESS_K* address, size_t addressSize, volatile uint8_t* cancelRequested) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s || !address)
@@ -1173,7 +1155,6 @@ static KSTATUS LwipProviderConnect(void* socket, const SYS_SOCKET_ADDRESS_K* add
}
}
// Implements the provider Send operation.
static KSTATUS LwipProviderSend(void* socket, const void* buffer, size_t length, uint32_t flags, size_t* sentOut) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (sentOut)
@@ -1257,7 +1238,6 @@ static KSTATUS LwipReceiveFromBuffered(LWIP_PROVIDER_SOCKET* s, uint8_t* out,
return NTLSTATUS_SUCCESS;
}
// Implements the provider Receive operation.
static KSTATUS LwipProviderReceive(void* socket, void* buffer, size_t length, uint32_t flags, size_t* receivedOut, volatile uint8_t* cancelRequested) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (receivedOut)
@@ -1462,7 +1442,6 @@ static KSTATUS LwipProviderReceiveFrom(void* socket, void* buffer, size_t length
return LwipErrToStatus(err);
}
// Implements the provider Set Option operation.
static KSTATUS LwipProviderSetOption(void* socket, uint32_t option, const void* value, size_t valueSize) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s || !value)
@@ -1501,7 +1480,6 @@ static KSTATUS LwipProviderSetOption(void* socket, uint32_t option, const void*
return NTLSTATUS_SUCCESS;
}
// Implements the provider Get Option operation.
static KSTATUS LwipProviderGetOption(void* socket, uint32_t option, void* value, size_t valueSize, size_t* actualSizeOut) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (actualSizeOut)
@@ -1538,7 +1516,6 @@ static KSTATUS LwipProviderGetOption(void* socket, uint32_t option, void* value,
return NTLSTATUS_SUCCESS;
}
// Implements the provider Poll operation.
static KSTATUS LwipProviderPoll(void* socket, uint32_t events, uint32_t* returnedEventsOut) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s || !returnedEventsOut)
@@ -1577,7 +1554,6 @@ static KSTATUS LwipProviderPoll(void* socket, uint32_t events, uint32_t* returne
return NTLSTATUS_SUCCESS;
}
// Implements the provider Shutdown operation.
static KSTATUS LwipProviderShutdown(void* socket, uint32_t how) {
LWIP_PROVIDER_SOCKET* s = (LWIP_PROVIDER_SOCKET*)socket;
if (!s)
@@ -1648,7 +1624,6 @@ static void LwipResolveStartCallback(void* argument) {
LwipResolveRelease(context);
}
// Implements the provider Resolve Host operation.
static KSTATUS LwipProviderResolveHost(const char* name, uint32_t family, SYS_SOCKET_ADDRESS_K* addressOut) {
if (!name || !addressOut)
return NTLSTATUS_INVALID_PARAMETER;
@@ -1819,7 +1794,6 @@ static KSTATUS LwipDispatchInternalDeviceControl(DEVICE_OBJECT* device, IRP* irp
static KSTATUS DriverInitialize(NTL_MODULE* module) {
(void)module;
DbgPrint("lwIP: driver loading...\n");
LWIP_NETIF_CONFIG defaultConfig;
KSTATUS st = LwipLoadConfigFromSection(LWIP_SETTINGS_DEFAULT_SECTION, &defaultConfig);
@@ -1852,7 +1826,6 @@ static KSTATUS DriverInitialize(NTL_MODULE* module) {
return st;
}
DbgPrint("lwIP: driver initialized\n");
return NTLSTATUS_SUCCESS;
}