diff --git a/sdk/xtdk/amd64/mmtypes.h b/sdk/xtdk/amd64/mmtypes.h index 6f91210..39b18fb 100644 --- a/sdk/xtdk/amd64/mmtypes.h +++ b/sdk/xtdk/amd64/mmtypes.h @@ -10,6 +10,7 @@ #define __XTDK_AMD64_MMTYPES_H #include +#include /* Pages related definitions */ @@ -34,6 +35,9 @@ /* Minimum number of physical pages needed by the system */ #define MM_MINIMUM_PHYSICAL_PAGES 2048 +/* Default number of secondary colors */ +#define MM_DEFAULT_SECONDARY_COLORS 64 + /* Page size enumeration list */ typedef enum _PAGE_SIZE { @@ -182,9 +186,51 @@ typedef union _MMPTE MMPTE_LIST List; } MMPTE, *PMMPTE; -/* Page Directory Entry structure definitions */ -typedef union _MMPTE MMPDE, *PMMPDE; -typedef union _MMPTE MMPPE, *PMMPPE; -typedef union _MMPTE MMPXE, *PMMPXE; +/* Page Frame Number structure definition */ +typedef struct _MMPFN +{ + union + { + PFN_NUMBER Flink; + ULONG WsIndex; + PKEVENT Event; + XTSTATUS ReadStatus; + SINGLE_LIST_ENTRY NextStackPfn; + } u1; + PMMPTE PteAddress; + union + { + PFN_NUMBER Blink; + ULONG_PTR ShareCount; + } u2; + union + { + MMPFNENTRY e1; + struct + { + USHORT ShortFlags; + USHORT ReferenceCount; + } e2; + } u3; + union + { + MMPTE OriginalPte; + LONG AweReferenceCount; + }; + union + { + ULONG_PTR EntireFrame; + struct + { + ULONG_PTR PteFrame:58; + ULONG_PTR InPageError:1; + ULONG_PTR VerifierAllocation:1; + ULONG_PTR AweAllocation:1; + ULONG_PTR LockCharged:1; + ULONG_PTR KernelStack:1; + ULONG_PTR MustBeCached:1; + }; + } u4; +} MMPFN, *PMMPFN; #endif /* __XTDK_AMD64_MMTYPES_H */ diff --git a/sdk/xtdk/amd64/xtstruct.h b/sdk/xtdk/amd64/xtstruct.h index ff1fcec..cee10a9 100644 --- a/sdk/xtdk/amd64/xtstruct.h +++ b/sdk/xtdk/amd64/xtstruct.h @@ -38,6 +38,7 @@ typedef struct _KSWITCH_FRAME KSWITCH_FRAME, *PKSWITCH_FRAME; typedef struct _KTHREAD_INIT_FRAME KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FRAME; typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME; typedef struct _KTSS KTSS, *PKTSS; +typedef struct _MMPFN MMPFN, *PMMPFN; typedef struct _MMPTE_HARDWARE MMPTE_HARDWARE, *PMMPTE_HARDWARE; typedef struct _MMPTE_HARDWARE_LARGEPAGE MMPTE_HARDWARE_LARGEPAGE, *PMMPTE_HARDWARE_LARGEPAGE; typedef struct _MMPTE_LIST MMPTE_LIST, *PMMPTE_LIST; diff --git a/sdk/xtdk/i686/mmtypes.h b/sdk/xtdk/i686/mmtypes.h index 2b1993f..3174ece 100644 --- a/sdk/xtdk/i686/mmtypes.h +++ b/sdk/xtdk/i686/mmtypes.h @@ -10,6 +10,7 @@ #define __XTDK_I686_MMTYPES_H #include +#include /* Pages related definitions */ @@ -20,6 +21,9 @@ /* Minimum number of physical pages needed by the system */ #define MM_MINIMUM_PHYSICAL_PAGES 1100 +/* Default number of secondary colors */ +#define MM_DEFAULT_SECONDARY_COLORS 64 + /* Page size enumeration list */ typedef enum _PAGE_SIZE { @@ -144,9 +148,6 @@ typedef union _MMPTE MMPTE_LIST List; } MMPTE, *PMMPTE; -/* Page Directory Entry structure definition (with PAE support) */ -typedef union _MMPTE MMPDE, *PMMPDE; - /* Legacy Page Table entry structure definition (without PAE support) */ typedef struct _HARDWARE_LEGACY_PTE { @@ -254,7 +255,51 @@ typedef union _MMPTE_LEGACY MMPTE_LEGACY_LIST List; } MMPTE_LEGACY, *PMMPTE_LEGACY; -/* Page Directory Entry structure definition (without PAE support) */ -typedef union _MMPTE_LEGACY MMPDE_LEGACY, *PMMPDE_LEGACY; +/* Page Frame Number structure definition */ +typedef struct _MMPFN +{ + union + { + PFN_NUMBER Flink; + ULONG WsIndex; + PKEVENT Event; + XTSTATUS ReadStatus; + SINGLE_LIST_ENTRY NextStackPfn; + } u1; + PMMPTE PteAddress; + union + { + PFN_NUMBER Blink; + ULONG_PTR ShareCount; + } u2; + union + { + MMPFNENTRY e1; + struct + { + USHORT ShortFlags; + USHORT ReferenceCount; + } e2; + } u3; + union + { + MMPTE OriginalPte; + LONG AweReferenceCount; + }; + union + { + ULONG_PTR EntireFrame; + struct + { + ULONG_PTR PteFrame:26; + ULONG_PTR InPageError:1; + ULONG_PTR VerifierAllocation:1; + ULONG_PTR AweAllocation:1; + ULONG_PTR LockCharged:1; + ULONG_PTR KernelStack:1; + ULONG_PTR MustBeCached:1; + }; + } u4; +} MMPFN, *PMMPFN; #endif /* __XTDK_I686_MMTYPES_H */ diff --git a/sdk/xtdk/i686/xtstruct.h b/sdk/xtdk/i686/xtstruct.h index 812ba7c..a690cc1 100644 --- a/sdk/xtdk/i686/xtstruct.h +++ b/sdk/xtdk/i686/xtstruct.h @@ -42,6 +42,7 @@ typedef struct _KSWITCH_FRAME KSWITCH_FRAME, *PKSWITCH_FRAME; typedef struct _KTHREAD_INIT_FRAME KTHREAD_INIT_FRAME, *PKTHREAD_INIT_FRAME; typedef struct _KTRAP_FRAME KTRAP_FRAME, *PKTRAP_FRAME; typedef struct _KTSS KTSS, *PKTSS; +typedef struct _MMPFN MMPFN, *PMMPFN; typedef struct _MMPTE_HARDWARE MMPTE_HARDWARE, *PMMPTE_HARDWARE; typedef struct _MMPTE_LEGACY_HARDWARE MMPTE_LEGACY_HARDWARE, *PMMPTE_LEGACY_HARDWARE; typedef struct _MMPTE_LEGACY_LIST MMPTE_LEGACY_LIST, *PMMPTE_LEGACY_LIST; diff --git a/sdk/xtdk/mmtypes.h b/sdk/xtdk/mmtypes.h new file mode 100644 index 0000000..acbf7ed --- /dev/null +++ b/sdk/xtdk/mmtypes.h @@ -0,0 +1,38 @@ +/** + * PROJECT: ExectOS + * COPYRIGHT: See COPYING.md in the top level directory + * FILE: sdk/xtdk/mmtypes.h + * DESCRIPTION: Memory management data structures + * DEVELOPERS: Rafal Kupiec + */ + +#ifndef __XTDK_MMTYPES_H +#define __XTDK_MMTYPES_H + +#include + + +/* Color tables structure definition */ +typedef struct _MMCOLOR_TABLES +{ + ULONG_PTR Flink; + PVOID Blink; + ULONG_PTR Count; +} MMCOLOR_TABLES, *PMMCOLOR_TABLES; + +/* Page Frame Entry structure definition */ +typedef struct _MMPFNENTRY +{ + USHORT Modified:1; + USHORT ReadInProgress:1; + USHORT WriteInProgress:1; + USHORT PrototypePte:1; + USHORT PageColor:4; + USHORT PageLocation:3; + USHORT RemovalRequested:1; + USHORT CacheAttribute:2; + USHORT Rom:1; + USHORT ParityError:1; +} MMPFNENTRY, *PMMPFNENTRY; + +#endif /* __XTDK_MMTYPES_H */ diff --git a/sdk/xtdk/xtkmapi.h b/sdk/xtdk/xtkmapi.h index 15813cd..86ba3a4 100644 --- a/sdk/xtdk/xtkmapi.h +++ b/sdk/xtdk/xtkmapi.h @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include diff --git a/sdk/xtdk/xtstruct.h b/sdk/xtdk/xtstruct.h index 002db7e..fa7f9cd 100644 --- a/sdk/xtdk/xtstruct.h +++ b/sdk/xtdk/xtstruct.h @@ -243,6 +243,8 @@ typedef struct _LOADER_GRAPHICS_INFORMATION_BLOCK LOADER_GRAPHICS_INFORMATION_BL typedef struct _LOADER_INFORMATION_BLOCK LOADER_INFORMATION_BLOCK, *PLOADER_INFORMATION_BLOCK; typedef struct _LOADER_MEMORY_MAPPING LOADER_MEMORY_MAPPING, *PLOADER_MEMORY_MAPPING; typedef struct _M128 M128, *PM128; +typedef struct _MMCOLOR_TABLES MMCOLOR_TABLES, *PMMCOLOR_TABLES; +typedef struct _MMPFNENTRY MMPFNENTRY, *PMMPFNENTRY; typedef struct _PCAT_FIRMWARE_INFORMATION PCAT_FIRMWARE_INFORMATION, *PPCAT_FIRMWARE_INFORMATION; typedef struct _PCI_BRIDGE_CONTROL_REGISTER PCI_BRIDGE_CONTROL_REGISTER, *PPCI_BRIDGE_CONTROL_REGISTER; typedef struct _PCI_COMMON_CONFIG PCI_COMMON_CONFIG, *PPCI_COMMON_CONFIG;