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
@@ -25,7 +25,7 @@
|
||||
#include <ntlite/ddk/time.h>
|
||||
#include <ntlite/ddk/timer.h>
|
||||
|
||||
#define NTL_DDK_VERSION 1u
|
||||
#define NTL_DDK_VERSION 2u
|
||||
|
||||
// Root DDK table passed to kernel drivers by the driver loader.
|
||||
typedef struct NTL_DDK {
|
||||
|
||||
@@ -4,8 +4,9 @@
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
// Kernel object type identifiers used by the legacy object header.
|
||||
// Kernel object type identifiers used by the shared object header.
|
||||
typedef enum OBJECT_TYPE {
|
||||
ObjectTypeProcess = 1,
|
||||
ObjectTypeThread = 2,
|
||||
@@ -27,16 +28,35 @@ typedef enum OBJECT_TYPE {
|
||||
ObjectTypeImageSection = 18,
|
||||
ObjectTypeTimer = 19,
|
||||
ObjectTypeModule = 20,
|
||||
ObjectTypeDisplayClock = 21,
|
||||
} OBJECT_TYPE;
|
||||
|
||||
// Legacy object header embedded by current driver/device objects.
|
||||
typedef enum OBJECT_LIFETIME_STATE {
|
||||
ObjectAlive = 1,
|
||||
ObjectDying,
|
||||
ObjectDead
|
||||
} OBJECT_LIFETIME_STATE;
|
||||
|
||||
#define OBJECT_FLAG_INSERTED 0x00000001u
|
||||
#define OBJECT_FLAG_UNLINKED 0x00000002u
|
||||
|
||||
// Object header embedded by kernel and driver-owned reference-counted objects.
|
||||
typedef struct OBJECT {
|
||||
OBJECT_TYPE Type;
|
||||
volatile long RefCount;
|
||||
volatile long LifetimeState;
|
||||
volatile long Flags;
|
||||
void (*Destroy)(struct OBJECT* self);
|
||||
} OBJECT;
|
||||
|
||||
// Increments an object's reference count.
|
||||
// Initializes an embedded object header with one live reference.
|
||||
__declspec(dllexport) void ObInitializeObjectHeader(OBJECT* object, OBJECT_TYPE type);
|
||||
|
||||
// Acquires a reference only while the object is alive and inserted.
|
||||
// The caller must stabilize the pointer through its owning lock or reference.
|
||||
__declspec(dllexport) bool ObTryReferenceObject(OBJECT* object);
|
||||
|
||||
// Increments an object's reference count and stops on stale-object misuse.
|
||||
__declspec(dllexport) void ObReferenceObject(OBJECT* object);
|
||||
|
||||
// Decrements an object's reference count and destroys it when it reaches zero.
|
||||
|
||||
Reference in new issue
Block a user