replace the VHD/diskpart disk image pipeline with a directory-based vvfat root, we'll see when it breaks, fix /O2, add an all_tests, generalize the fat32 driver into a fat 16+32 driver, change policy on volume drivers, collapse KCPU's fields into a single atomic KE_CPU_STATE state machine, move scheduler ticking to per-CPU LAPIC timers, gate verbose SMP topology logging behind selftest diagnostics and add SMP pool-checkpoint validation around AP admission, add checked intrusive list helpers behind a new KE_DEBUG_LIST_CHECKS flag, add ObInitializeObjectHeader/ObTryReferenceObject, add waitable display clock objects and a SYS_OPEN_DISPLAY_CLOCK syscall for vsync-style waits, refactor kernel input into a per-queue KE_INPUT_CONTEXT with its own key/mouse ring buffers and DPC-driven key repeat, add KeInputQueuePeekEvent/ReadEvent/WaitKey and a SYS_QUERY_GLOBAL_INPUT_STATE syscall, split the kernel pool allocator out of mm_virt, new video files!
This commit is contained in:
1 parent
485a6bbfe7
commit
8b254f84f4
74 files changed
+4488
-2503
No files matched your search
@@ -560,6 +560,7 @@ KSTATUS SysKillProcess(uint32_t processHandle, int32_t exitCode);
|
||||
#define SYS_THREAD_WAIT_FILE_MAPPING 15u
|
||||
#define SYS_THREAD_WAIT_SURFACE 16u
|
||||
#define SYS_THREAD_WAIT_TIMER 17u
|
||||
#define SYS_THREAD_WAIT_DISPLAY_CLOCK 18u
|
||||
#define SYS_THREAD_WAIT_UNKNOWN 0xffffffffu
|
||||
|
||||
typedef struct SYS_THREAD_INFO {
|
||||
@@ -863,9 +864,41 @@ KSTATUS SysClearScreen(uint32_t color);
|
||||
KSTATUS SysGetScreenSize(int* widthOut, int* heightOut);
|
||||
KSTATUS SysQueryDisplayInfo(SYS_DISPLAY_INFO* infoOut);
|
||||
|
||||
// Display clocks are waitable pacing objects. Providers with frame-event
|
||||
// support signal them once per submitted frame. Other providers use the BSP
|
||||
// scheduler tick, with PeriodMilliseconds rounded up to one or more ticks.
|
||||
#define SYS_DISPLAY_CLOCK_FLAG_NONE 0u
|
||||
#define SYS_DISPLAY_CLOCK_DEFAULT_PERIOD_MS 1ull
|
||||
|
||||
typedef struct SYS_OPEN_DISPLAY_CLOCK_REQUEST {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint64_t PeriodMilliseconds;
|
||||
uint32_t* HandleOut;
|
||||
} SYS_OPEN_DISPLAY_CLOCK_REQUEST;
|
||||
|
||||
KSTATUS SysOpenDisplayClock(const SYS_OPEN_DISPLAY_CLOCK_REQUEST* request);
|
||||
|
||||
// Input.
|
||||
#define SYS_INPUT_QUEUE_FLAG_NONE 0x00000000u
|
||||
#define SYS_INPUT_EVENT_FLAG_NONE 0x00000000u
|
||||
#define SYS_GLOBAL_INPUT_STATE_FLAG_NONE 0x00000000u
|
||||
#define SYS_GLOBAL_INPUT_KEY_BYTES 32u
|
||||
|
||||
// SysQueryGlobalInputState snapshots the current physical input state. It does
|
||||
// not consume queued keyboard or mouse events and is intentionally global; a
|
||||
// later routed input context API should use a context handle instead.
|
||||
typedef struct SYS_GLOBAL_INPUT_STATE {
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint64_t Generation;
|
||||
uint32_t Modifiers;
|
||||
uint8_t KeyDown[SYS_GLOBAL_INPUT_KEY_BYTES];
|
||||
int32_t MouseX;
|
||||
int32_t MouseY;
|
||||
int32_t MouseWheel;
|
||||
uint32_t MouseButtons;
|
||||
} SYS_GLOBAL_INPUT_STATE;
|
||||
|
||||
// A zero QueueHandle means the default keyboard input queue. A
|
||||
// nonzero QueueHandle must be a handle returned by SysOpenInputQueue. A zero
|
||||
@@ -884,6 +917,7 @@ KSTATUS SysIsKeyDown(INPUT_KEY key, bool* downOut);
|
||||
KSTATUS SysReadKeyboardChar(char* charOut);
|
||||
KSTATUS SysReadKey(INPUT_KEY* keyOut);
|
||||
uint32_t SysGetKeyModifiers(void);
|
||||
KSTATUS SysQueryGlobalInputState(SYS_GLOBAL_INPUT_STATE* stateOut);
|
||||
KSTATUS SysReadInputEvent(const SYS_INPUT_EVENT_REQUEST* request);
|
||||
KSTATUS SysPeekInputEvent(const SYS_INPUT_EVENT_REQUEST* request);
|
||||
|
||||
@@ -1046,7 +1080,7 @@ KSTATUS SysRecvSocket(uint32_t socket, void* buffer, size_t length, uint32_t fla
|
||||
KSTATUS SysShutdownSocket(uint32_t socket, uint32_t how);
|
||||
KSTATUS SysSendToSocket(uint32_t socket, const SYS_SOCKET_SEND_TO_REQUEST* request);
|
||||
KSTATUS SysRecvFromSocket(uint32_t socket, const SYS_SOCKET_RECV_FROM_REQUEST* request);
|
||||
KSTATUS SysResolveHost(const SYS_RESOLVE_HOST_REQUEST* request);
|
||||
KSTATUS SysResolveHost(const SYS_RESOLVE_HOST_REQUEST* request); // Cry some more, microkernel purists!
|
||||
KSTATUS SysSetSocketOption(uint32_t socket, const SYS_SOCKET_OPTION_REQUEST* request);
|
||||
KSTATUS SysGetSocketOption(uint32_t socket, const SYS_SOCKET_OPTION_REQUEST* request);
|
||||
KSTATUS SysPoll(const SYS_POLL_REQUEST* request);
|
||||
|
||||
Reference in new issue
Block a user