major restructuring, prepare for smp

This commit is contained in:
maksw committed 2026-05-28 18:53:37 +02:00
1 parent b3569a2b90
commit 6bff37746d
229 files changed
+1617 -1489

No files matched your search

@@ -0,0 +1 @@
#pragma pack(push, 1)
+49
View File
@@ -0,0 +1,49 @@
#pragma once
#ifndef LWIP_ARCH_CC_H
#define LWIP_ARCH_CC_H
#include <stdint.h>
#include <stddef.h>
#include <kernel/ke_debug.h>
#ifndef LITTLE_ENDIAN
#define LITTLE_ENDIAN 1234
#endif
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 4321
#endif
#ifndef BYTE_ORDER
#define BYTE_ORDER LITTLE_ENDIAN
#endif
/* MSVC/freestanding kernel-friendly printf format fallbacks. */
#define LWIP_NO_INTTYPES_H 1
#define X8_F "02x"
#define U16_F "hu"
#define S16_F "hd"
#define X16_F "hx"
#define U32_F "lu"
#define S32_F "ld"
#define X32_F "lx"
#define SZT_F "llu"
#define LWIP_NO_CTYPE_H 1
#define LWIP_TIMEVAL_PRIVATE 1
#define LWIP_PROVIDE_ERRNO 1
/* Used by SYS_LIGHTWEIGHT_PROT. Keep it wide enough for saved RFLAGS. */
typedef uintptr_t sys_prot_t;
#define LWIP_PLATFORM_DIAG(x) do { DbgPrint x; } while (0)
#define LWIP_PLATFORM_ASSERT(x) do { KePanic("lwIP assert: %s\n", (x)); } while (0)
unsigned int lwip_port_rand(void);
#define LWIP_RAND() ((uint32_t)lwip_port_rand())
/* Force lwIP's static heap/aligned buffers to be at least 8-byte aligned. */
#define LWIP_DECLARE_MEMORY_ALIGNED(variable_name, size) \
__declspec(align(8)) uint8_t variable_name[LWIP_MEM_ALIGN_BUFFER(size)]
#define PACK_STRUCT_USE_INCLUDES
#endif /* LWIP_ARCH_CC_H */
@@ -0,0 +1 @@
#pragma pack(pop)
@@ -0,0 +1,51 @@
#pragma once
#ifndef LWIP_ARCH_SYS_ARCH_H
#define LWIP_ARCH_SYS_ARCH_H
#include <stdint.h>
#include <lwip/opt.h>
#ifdef __cplusplus
extern "C" {
#endif
struct sys_sem;
typedef struct sys_sem* sys_sem_t;
#define SYS_SEM_NULL NULL
#define sys_sem_valid(sem) ((sem) && (*(sem) != NULL))
#define sys_sem_valid_val(sem) ((sem) != NULL)
#define sys_sem_set_invalid(sem) do { if ((sem)) { *(sem) = NULL; } } while (0)
#define sys_sem_set_invalid_val(sem) do { (sem) = NULL; } while (0)
struct sys_mutex;
typedef struct sys_mutex* sys_mutex_t;
#define sys_mutex_valid(mutex) ((mutex) && (*(mutex) != NULL))
#define sys_mutex_valid_val(mutex) ((mutex) != NULL)
#define sys_mutex_set_invalid(mutex) do { if ((mutex)) { *(mutex) = NULL; } } while (0)
struct sys_mbox;
typedef struct sys_mbox* sys_mbox_t;
#define SYS_MBOX_NULL NULL
#define sys_mbox_valid(mbox) ((mbox) && (*(mbox) != NULL))
#define sys_mbox_valid_val(mbox) ((mbox) != NULL)
#define sys_mbox_set_invalid(mbox) do { if ((mbox)) { *(mbox) = NULL; } } while (0)
#define sys_mbox_set_invalid_val(mbox) do { (mbox) = NULL; } while (0)
/*
* lwIP only treats sys_thread_t as an opaque handle. Keep it pointer-sized.
*
* Do NOT make this a by-value incomplete struct. MSVC may compile callers
* that see only the incomplete type with a hidden struct-return parameter,
* which shifts sys_thread_new(name, thread, arg, ...) so the callee receives
* thread == name and arg == thread. The first tcpip_thread then jumps into
* the literal string "tcpip" as code.
*/
typedef void* sys_thread_t;
void LwipPortSetTimerQuery(uint64_t (*query_ticks_us)(void));
#ifdef __cplusplus
}
#endif
#endif /* LWIP_ARCH_SYS_ARCH_H */
+91
View File
@@ -0,0 +1,91 @@
#pragma once
/*
* lwipopts.h - kernel port configuration for lwIP 2.2.1.
*
* This is intentionally a practical first configuration: IPv4, ARP, ICMP,
* UDP, TCP, DHCP, DNS and netconn are enabled; IPv6, PPP,
* SNMP, lwIP's POSIX socket API, and app protocols stay off.
*/
#define NO_SYS 0
#define SYS_LIGHTWEIGHT_PROT 1
#define MEM_ALIGNMENT 8
/* Keep lwIP memory self-contained. It uses its own heap/pools, not malloc(). */
#define MEM_LIBC_MALLOC 0
#define MEMP_MEM_MALLOC 0
#define MEM_SIZE (256 * 1024)
#define MEMP_OVERFLOW_CHECK 0
#define MEMP_SANITY_CHECK 0
#define PBUF_POOL_SIZE 64
#define PBUF_POOL_BUFSIZE 1536
#define MEMP_NUM_PBUF 32
#define MEMP_NUM_NETBUF 32
#define MEMP_NUM_NETCONN 32
#define MEMP_NUM_TCPIP_MSG_API 64
#define MEMP_NUM_TCPIP_MSG_INPKT 64
#define MEMP_NUM_SYS_TIMEOUT 32
#define LWIP_IPV4 1
#define LWIP_IPV6 0
#define LWIP_ARP 1
#define LWIP_ETHERNET 1
#define LWIP_ICMP 1
#define LWIP_IGMP 0
#define LWIP_RAW 1
#define LWIP_UDP 1
#define LWIP_TCP 1
#define LWIP_DHCP 1
#define LWIP_AUTOIP 0
#define LWIP_DNS 1
#define TCP_MSS 1460
#define TCP_WND (4 * TCP_MSS)
#define TCP_SND_BUF (4 * TCP_MSS)
#define TCP_SND_QUEUELEN 16
#define MEMP_NUM_TCP_PCB 16
#define MEMP_NUM_TCP_PCB_LISTEN 8
#define MEMP_NUM_TCP_SEG 32
#define MEMP_NUM_UDP_PCB 16
#define LWIP_NETCONN 1
#define LWIP_SOCKET 0
#define LWIP_COMPAT_SOCKETS 0
#define LWIP_POSIX_SOCKETS_IO_NAMES 0
#define LWIP_SOCKET_SELECT 0
#define LWIP_SO_RCVTIMEO 1
#define LWIP_SO_SNDTIMEO 1
#define LWIP_SO_RCVBUF 1
#define LWIP_SO_REUSE 1
#define LWIP_TCP_KEEPALIVE 1
#define TCPIP_THREAD_NAME "tcpip"
#define TCPIP_THREAD_STACKSIZE 0
#define TCPIP_THREAD_PRIO 2
#define TCPIP_MBOX_SIZE 128
#define DEFAULT_THREAD_STACKSIZE 0
#define DEFAULT_THREAD_PRIO 1
#define DEFAULT_RAW_RECVMBOX_SIZE 32
#define DEFAULT_UDP_RECVMBOX_SIZE 64
#define DEFAULT_TCP_RECVMBOX_SIZE 64
#define DEFAULT_ACCEPTMBOX_SIZE 32
#define LWIP_NETIF_HOSTNAME 1
#define LWIP_NETIF_STATUS_CALLBACK 1
#define LWIP_NETIF_LINK_CALLBACK 1
#define LWIP_CHECKSUM_CTRL_PER_NETIF 0
#define CHECKSUM_GEN_IP 1
#define CHECKSUM_GEN_UDP 1
#define CHECKSUM_GEN_TCP 1
#define CHECKSUM_CHECK_IP 1
#define CHECKSUM_CHECK_UDP 1
#define CHECKSUM_CHECK_TCP 1
#define LWIP_TIMERS 1
#define LWIP_TCPIP_TIMEOUT 1
#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS 1
#define LWIP_STATS 0
#define LWIP_DEBUG 0
#define LWIP_NOASSERT 0
+38
View File
@@ -0,0 +1,38 @@
#pragma once
#ifndef LWIP_PORT_STDLIB_H
#define LWIP_PORT_STDLIB_H
/*
* Minimal freestanding stdlib shim for lwIP.
*
* lwIP 2.2.1 includes <stdlib.h> in a couple of files only for atoi(). If MSVC
* finds the UCRT header, it drags errno.h into the kernel build and then lwIP's
* own errno values collide with UCRT's. Put this header first in lwIP's include
* path so those sources stay freestanding.
*/
static __inline int atoi(const char* s) {
int sign = 1;
int value = 0;
if (!s)
return 0;
while (*s == ' ' || *s == '\t' || *s == '\n' || *s == '\r' || *s == '\v' || *s == '\f')
++s;
if (*s == '-') {
sign = -1;
++s;
} else if (*s == '+') {
++s;
}
while (*s >= '0' && *s <= '9') {
value = value * 10 + (*s - '0');
++s;
}
return sign * value;
}
#endif /* LWIP_PORT_STDLIB_H */