Fix the build by adding KDPC_DATA as a shared arch structure. Kind of a hack but I could not find another way to avoid the undelrying recursive dependencies that not doing this would cause. Also made an arch-specific fix to KPROCESS and wrote a little comment on it Modified: trunk/reactos/include/ndk/arch/ketypes.h Modified: trunk/reactos/include/ndk/ketypes.h _____
Modified: trunk/reactos/include/ndk/arch/ketypes.h --- trunk/reactos/include/ndk/arch/ketypes.h 2005-07-05 21:17:01 UTC (rev 16438) +++ trunk/reactos/include/ndk/arch/ketypes.h 2005-07-05 21:57:55 UTC (rev 16439) @@ -9,6 +9,15 @@
#ifndef _ARCH_KETYPES_H #define _ARCH_KETYPES_H
+/* Shared structure needed by Arch-specific headers */ +typedef struct _KDPC_DATA +{ + LIST_ENTRY DpcListHead; + ULONG DpcLock; + ULONG DpcQueueDepth; + ULONG DpcCount; +} KDPC_DATA, *PKDPC_DATA; + #ifdef _M_IX86 #include <ndk/i386/ketypes.h> #else _____
Modified: trunk/reactos/include/ndk/ketypes.h --- trunk/reactos/include/ndk/ketypes.h 2005-07-05 21:17:01 UTC (rev 16438) +++ trunk/reactos/include/ndk/ketypes.h 2005-07-05 21:57:55 UTC (rev 16439) @@ -15,6 +15,12 @@
#include "mmtypes.h" #include <arc/arc.h>
+/* + * Architecture-specific types + * NB: Although KPROCESS is Arch-Specific, + * only some members are different and we will use #ifdef + * directly in the structure to avoid dependency-hell + */ #include "arch/ketypes.h"
/* CONSTANTS *****************************************************************/ @@ -57,23 +63,15 @@ CurrentApcEnvironment } KAPC_ENVIRONMENT;
-typedef struct _KDPC_DATA -{ - LIST_ENTRY DpcListHead; - ULONG DpcLock; - ULONG DpcQueueDepth; - ULONG DpcCount; -} KDPC_DATA, *PKDPC_DATA; - /* We don't want to force NTIFS usage only for a single structure */ #ifndef _NTIFS_ typedef struct _KAPC_STATE { - LIST_ENTRY ApcListHead[2]; - PKPROCESS Process; - BOOLEAN KernelApcInProgress; - BOOLEAN KernelApcPending; - BOOLEAN UserApcPending; + LIST_ENTRY ApcListHead[2]; + PKPROCESS Process; + BOOLEAN KernelApcInProgress; + BOOLEAN KernelApcPending; + BOOLEAN UserApcPending; } KAPC_STATE, *PKAPC_STATE, *RESTRICTED_POINTER PRKAPC_STATE; #endif
@@ -108,26 +106,26 @@
typedef struct _KINTERRUPT { - CSHORT Type; - CSHORT Size; - LIST_ENTRY InterruptListEntry; - PKSERVICE_ROUTINE ServiceRoutine; - PVOID ServiceContext; - KSPIN_LOCK SpinLock; - ULONG TickCount; - PKSPIN_LOCK ActualLock; - PVOID DispatchAddress; - ULONG Vector; - KIRQL Irql; - KIRQL SynchronizeIrql; - BOOLEAN FloatingSave; - BOOLEAN Connected; - CHAR Number; - UCHAR ShareVector; - KINTERRUPT_MODE Mode; - ULONG ServiceCount; - ULONG DispatchCount; - ULONG DispatchCode[106]; + CSHORT Type; + CSHORT Size; + LIST_ENTRY InterruptListEntry; + PKSERVICE_ROUTINE ServiceRoutine; + PVOID ServiceContext; + KSPIN_LOCK SpinLock; + ULONG TickCount; + PKSPIN_LOCK ActualLock; + PVOID DispatchAddress; + ULONG Vector; + KIRQL Irql; + KIRQL SynchronizeIrql; + BOOLEAN FloatingSave; + BOOLEAN Connected; + CHAR Number; + UCHAR ShareVector; + KINTERRUPT_MODE Mode; + ULONG ServiceCount; + ULONG DispatchCount; + ULONG DispatchCode[106]; } KINTERRUPT, *PKINTERRUPT;
typedef struct _KEVENT_PAIR @@ -183,23 +181,14 @@
typedef struct _KTHREAD { - /* For waiting on thread exit */ DISPATCHER_HEADER DispatcherHeader; /* 00 */ - - /* List of mutants owned by the thread */ LIST_ENTRY MutantListHead; /* 10 */ PVOID InitialStack; /* 18 */ ULONG_PTR StackLimit; /* 1C */ - - /* Pointer to the thread's environment block in user memory */ struct _TEB *Teb; /* 20 */ - - /* Pointer to the thread's TLS array */ PVOID TlsArray; /* 24 */ PVOID KernelStack; /* 28 */ UCHAR DebugActive; /* 2C */ - - /* Thread state (one of THREAD_STATE_xxx constants below) */ UCHAR State; /* 2D */ BOOLEAN Alerted[2]; /* 2E */ UCHAR Iopl; /* 30 */ @@ -215,8 +204,8 @@ UCHAR WaitReason; /* 57 */ union /* 58 */ { - PKWAIT_BLOCK WaitBlockList; /* 58 */ - PKGATE GateObject; /* 58 */ + PKWAIT_BLOCK WaitBlockList; /* 58 */ + PKGATE GateObject; /* 58 */ }; /* 58 */ LIST_ENTRY WaitListEntry; /* 5C */ ULONG WaitTime; /* 64 */ @@ -230,10 +219,10 @@ { struct { - USHORT KernelApcDisable; - USHORT SpecialApcDisable; + USHORT KernelApcDisable; + USHORT SpecialApcDisable; }; - ULONG CombinedApcDisable; /* D0 */ + ULONG CombinedApcDisable; /* D0 */ }; KAFFINITY UserAffinity; /* D4 */ UCHAR SystemAffinityActive;/* D8 */ @@ -278,23 +267,18 @@
#include <poppack.h>
-/* - * NAME: KPROCESS - * DESCRIPTION: Internal Kernel Process Structure. - * PORTABILITY: Architecture Dependent. - * KERNEL VERSION: 5.2 - * DOCUMENTATION: http://reactos.com/wiki/index.php/KPROCESS - */ typedef struct _KPROCESS { DISPATCHER_HEADER Header; /* 000 */ LIST_ENTRY ProfileListHead; /* 010 */ PHYSICAL_ADDRESS DirectoryTableBase; /* 018 */ +#if defined(_M_IX86) KGDTENTRY LdtDescriptor; /* 020 */ KIDTENTRY Int21Descriptor; /* 028 */ USHORT IopmOffset; /* 030 */ UCHAR Iopl; /* 032 */ UCHAR Unused; /* 033 */ +#endif ULONG ActiveProcessors; /* 034 */ ULONG KernelTime; /* 038 */ ULONG UserTime; /* 03C */