- Sync NDK changes.

svn path=/trunk/; revision=31835
This commit is contained in:
Aleksey Bragin 2008-01-16 23:19:01 +00:00
parent 0402021d21
commit 7b3487eb9a
13 changed files with 233 additions and 76 deletions

View file

@ -22,7 +22,7 @@ Author:
//
// Include the right file for this architecture.
//
#ifdef _M_IX86
#if defined(_M_IX86) || defined(_M_AMD64)
#include <i386/mmtypes.h>
#elif defined(_M_PPC)
#include <powerpc/mmtypes.h>

View file

@ -108,7 +108,7 @@ Author:
#define KTHREAD_PENDING_USER_APC 0x28 + 0x16
#define KTHREAD_PENDING_KERNEL_APC 0x28 + 0x15
#define KTHREAD_CONTEXT_SWITCHES 0x48
#define KTHREAD_STATE 0x4C
#define KTHREAD_STATE_ 0x4C
#define KTHREAD_NPX_STATE 0x4D
#define KTHREAD_WAIT_IRQL 0x4E
#define KTHREAD_NEXT_PROCESSOR 0x40
@ -615,3 +615,4 @@ Author:

View file

@ -227,6 +227,12 @@ typedef struct _KEY_FULL_INFORMATION
WCHAR Class[1];
} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
typedef struct _KEY_NAME_INFORMATION
{
WCHAR Name[1];
} KEY_NAME_INFORMATION, *PKEY_NAME_INFORMATION;
typedef struct _KEY_NODE_INFORMATION
{
LARGE_INTEGER LastWriteTime;
@ -519,3 +525,4 @@ typedef struct _CM_DISK_GEOMETRY_DEVICE_DATA
#endif // _CMTYPES_H

View file

@ -737,9 +737,9 @@ typedef struct _SYSTEM_BASIC_INFORMATION
ULONG LowestPhysicalPageNumber;
ULONG HighestPhysicalPageNumber;
ULONG AllocationGranularity;
ULONG MinimumUserModeAddress;
ULONG MaximumUserModeAddress;
KAFFINITY ActiveProcessorsAffinityMask;
ULONG_PTR MinimumUserModeAddress;
ULONG_PTR MaximumUserModeAddress;
ULONG_PTR ActiveProcessorsAffinityMask;
CCHAR NumberOfProcessors;
} SYSTEM_BASIC_INFORMATION, *PSYSTEM_BASIC_INFORMATION;
@ -1454,5 +1454,20 @@ typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION
ULONG TableBufferLength;
UCHAR TableBuffer[1];
} SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION;
//
// Class 81
//
typedef struct _SYSTEM_MEMORY_LIST_INFORMATION
{
SIZE_T ZeroPageCount;
SIZE_T FreePageCount;
SIZE_T ModifiedPageCount;
SIZE_T ModifiedNoWritePageCount;
SIZE_T BadPageCount;
SIZE_T PageCountByPriority[8];
SIZE_T RepurposedPagesByPriority[8];
} SYSTEM_MEMORY_LIST_INFORMATION, *PSYSTEM_MEMORY_LIST_INFORMATION;
#endif
#endif

View file

@ -15,7 +15,6 @@ Author:
Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
--*/
#ifndef _IOTYPES_H
#define _IOTYPES_H
@ -353,6 +352,19 @@ typedef enum _PNP_DEVNODE_STATE
#ifdef NTOS_MODE_USER
//
// I/O Status Block
//
typedef struct _IO_STATUS_BLOCK
{
union
{
NTSTATUS Status;
PVOID Pointer;
};
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
//
// File Information structures for NtQueryInformationFile
//
@ -560,6 +572,13 @@ typedef struct _FILE_DIRECTORY_INFORMATION
WCHAR FileName[1];
} FILE_DIRECTORY_INFORMATION, *PFILE_DIRECTORY_INFORMATION;
typedef struct _FILE_IO_COMPLETION_INFORMATION
{
PVOID KeyContext;
PVOID ApcContext;
IO_STATUS_BLOCK IoStatusBlock;
} FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION;
//
// File System Information structures for NtQueryInformationFile
//
@ -629,19 +648,6 @@ typedef struct _FILE_PIPE_PEEK_BUFFER
CHAR Data[1];
} FILE_PIPE_PEEK_BUFFER, *PFILE_PIPE_PEEK_BUFFER;
//
// I/O Status Block
//
typedef struct _IO_STATUS_BLOCK
{
union
{
NTSTATUS Status;
PVOID Pointer;
};
ULONG_PTR Information;
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
//
// I/O Error Log Structures
//

View file

@ -289,10 +289,43 @@ typedef enum _KTHREAD_STATE
Transition,
DeferredReady,
#if (NTDDI_VERSION >= NTDDI_WS03)
GateWait,
GateWait
#endif
} KTHREAD_STATE, *PKTHREAD_STATE;
//
// Kernel Object Types
//
typedef enum _KOBJECTS
{
EventNotificationObject = 0,
EventSynchronizationObject = 1,
MutantObject = 2,
ProcessObject = 3,
QueueObject = 4,
SemaphoreObject = 5,
ThreadObject = 6,
GateObject = 7,
TimerNotificationObject = 8,
TimerSynchronizationObject = 9,
Spare2Object = 10,
Spare3Object = 11,
Spare4Object = 12,
Spare5Object = 13,
Spare6Object = 14,
Spare7Object = 15,
Spare8Object = 16,
Spare9Object = 17,
ApcObject = 18,
DpcObject = 19,
DeviceQueueObject = 20,
EventPairObject = 21,
InterruptObject = 22,
ProfileObject = 23,
ThreadedDpcObject = 24,
MaximumKernelObject = 25
} KOBJECTS;
//
// Adjust reasons
//
@ -667,39 +700,6 @@ typedef struct _KEXECUTE_OPTIONS
UCHAR Spare:2;
} KEXECUTE_OPTIONS, *PKEXECUTE_OPTIONS;
//
// Kernel Object Types
//
typedef enum _KOBJECTS
{
EventNotificationObject = 0,
EventSynchronizationObject = 1,
MutantObject = 2,
ProcessObject = 3,
QueueObject = 4,
SemaphoreObject = 5,
ThreadObject = 6,
GateObject = 7,
TimerNotificationObject = 8,
TimerSynchronizationObject = 9,
Spare2Object = 10,
Spare3Object = 11,
Spare4Object = 12,
Spare5Object = 13,
Spare6Object = 14,
Spare7Object = 15,
Spare8Object = 16,
Spare9Object = 17,
ApcObject = 18,
DpcObject = 19,
DeviceQueueObject = 20,
EventPairObject = 21,
InterruptObject = 22,
ProfileObject = 23,
ThreadedDpcObject = 24,
MaximumKernelObject = 25
} KOBJECTS;
//
// Kernel Thread (KTHREAD)
//
@ -709,6 +709,7 @@ typedef struct _KTHREAD
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
ULONGLONG CycleTime;
ULONG HighCycleTime;
ULONGLONG QuantumTarget;
#else
LIST_ENTRY MutantListHead;
#endif
@ -741,8 +742,26 @@ typedef struct _KTHREAD
PKWAIT_BLOCK WaitBlockList;
PKGATE GateObject;
};
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
union
{
struct
{
ULONG KernelStackResident:1;
ULONG ReadyTransition:1;
ULONG ProcessReadyQueue:1;
ULONG WaitNext:1;
ULONG SystemAffinityActive:1;
ULONG Alertable:1;
ULONG GdiFlushActive:1;
ULONG Reserved:25;
};
LONG MiscFlags;
};
#else
BOOLEAN Alertable;
BOOLEAN WaitNext;
#endif
UCHAR WaitReason;
SCHAR Priority;
BOOLEAN EnableStackSwap;
@ -796,7 +815,11 @@ typedef struct _KTHREAD
struct
{
UCHAR WaitBlockFill0[23];
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
UCHAR IdealProcessor;
#else
BOOLEAN SystemAffinityActive;
#endif
};
struct
{
@ -822,31 +845,22 @@ typedef struct _KTHREAD
PVOID CallbackStack;
PVOID ServiceTable;
UCHAR ApcStateIndex;
#if (NTDDI_VERSION < NTDDI_LONGHORN)
UCHAR IdealProcessor;
#endif
BOOLEAN Preempted;
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
BOOLEAN CalloutActive;
#else
BOOLEAN ProcessReadyQueue;
#endif
BOOLEAN KernelStackResident;
#endif
SCHAR BasePriority;
SCHAR PriorityDecrement;
CHAR Saturation;
#if (NTDDI_VERSION >= NTDDI_LONGHORN)
ULONG SystemCallNumber;
union
{
struct
{
ULONG Reserved0:1;
ULONG ReadyTransition:1;
ULONG ProcessReadyQueue:1;
ULONG Reserved2:1;
ULONG Reserved3:28;
};
LONG MiscFlags;
};
ULONG Spare2;
#endif
KAFFINITY UserAffinity;
struct _KPROCESS *Process;

View file

@ -47,6 +47,22 @@ Author:
#define TAG(A, B, C, D) \
(ULONG)(((A)<<0) + ((B)<<8) + ((C)<<16) + ((D)<<24))
//
// PFN Identity Uses
//
#define MMPFNUSE_PROCESSPRIVATE 0
#define MMPFNUSE_FILE 1
#define MMPFNUSE_PAGEFILEMAPPED 2
#define MMPFNUSE_PAGETABLE 3
#define MMPFNUSE_PAGEDPOOL 4
#define MMPFNUSE_NONPAGEDPOOL 5
#define MMPFNUSE_SYSTEMPTE 6
#define MMPFNUSE_SESSIONPRIVATE 7
#define MMPFNUSE_METAFILE 8
#define MMPFNUSE_AWEPAGE 9
#define MMPFNUSE_DRIVERLOCKPAGE 10
#define MMPFNUSE_KERNELSTACK 11
#ifndef NTOS_MODE_USER
//
@ -105,6 +121,21 @@ typedef enum _POOL_TYPE
} POOL_TYPE;
#endif
//
// Memory Manager Page Lists
//
typedef enum _MMLISTS
{
ZeroedPageList = 0,
FreePageList = 1,
StandbyPageList = 2,
ModifiedPageList = 3,
ModifiedNoWritePageList = 4,
BadPageList = 5,
ActiveAndValid = 6,
TransitionPage = 7
} MMLISTS;
//
// Per Processor Non Paged Lookaside List IDs
//
@ -177,6 +208,68 @@ typedef struct _VM_COUNTERS_EX
} VM_COUNTERS_EX, *PVM_COUNTERS_EX;
#endif
//
// Sub-Information Types for PFN Identity
//
typedef struct _MEMORY_FRAME_INFORMATION
{
ULONGLONG UseDescription:4;
ULONGLONG ListDescription:3;
ULONGLONG Reserved0:1;
ULONGLONG Pinned:1;
ULONGLONG DontUse:48;
ULONGLONG Priority:3;
ULONGLONG Reserved:4;
} MEMORY_FRAME_INFORMATION, *PMEMORY_FRAME_INFORMATION;
typedef struct _FILEOFFSET_INFORMATION
{
ULONGLONG DontUse:9;
ULONGLONG Offset:48;
ULONGLONG Reserved:7;
} FILEOFFSET_INFORMATION, *PFILEOFFSET_INFORMATION;
typedef struct _PAGEDIR_INFORMATION
{
ULONGLONG DontUse:9;
ULONGLONG PageDirectoryBase:48;
ULONGLONG Reserved:7;
} PAGEDIR_INFORMATION, *PPAGEDIR_INFORMATION;
typedef struct _UNIQUE_PROCESS_INFORMATION
{
ULONGLONG DontUse:9;
ULONGLONG UniqueProcessKey:48;
ULONGLONG Reserved:7;
} UNIQUE_PROCESS_INFORMATION, *PUNIQUE_PROCESS_INFORMATION;
//
// PFN Identity Data Structure
//
typedef struct _MMPFN_IDENTITY
{
union
{
MEMORY_FRAME_INFORMATION e1;
FILEOFFSET_INFORMATION e2;
PAGEDIR_INFORMATION e3;
UNIQUE_PROCESS_INFORMATION e4;
} u1;
SIZE_T PageFrameIndex;
union
{
struct
{
ULONG Image:1;
ULONG Mismatch:1;
} e1;
PVOID FileObject;
PVOID UniqueFileObjectKey;
PVOID ProtoPteAddress;
PVOID VirtualAddress;
} u2;
} MMPFN_IDENTITY, *PMMPFN_IDENTITY;
//
// List of Working Sets
//

View file

@ -2416,6 +2416,21 @@ RtlSetBits(
IN ULONG NumberToSet
);
NTSYSAPI
VOID
NTAPI
RtlSetAllBits(
PRTL_BITMAP BitMapHeader
);
NTSYSAPI
BOOLEAN
NTAPI
RtlTestBit(
PRTL_BITMAP BitMapHeader,
ULONG BitNumber
);
//
// Timer Functions
//

View file

@ -225,6 +225,11 @@ C_ASSERT(HEAP_CREATE_VALID_MASK == 0x0007F0FF);
#define RTL_DUPLICATE_UNICODE_STRING_NULL_TERMINATE 1
#define RTL_DUPLICATE_UNICODE_STRING_ALLOCATE_NULL_STRING 2
//
// RtlFindCharInUnicodeString Flags
//
#define RTL_FIND_CHAR_IN_UNICODE_STRING_CASE_INSENSITIVE 4
//
// Codepages
//

View file

@ -249,13 +249,6 @@ LdrLoadDll(
OUT PVOID *BaseAddress OPTIONAL
);
PVOID
NTAPI
RtlPcToFileHeader(
IN PVOID PcValue,
PVOID* BaseOfImage
);
PIMAGE_BASE_RELOCATION
NTAPI
LdrProcessRelocationBlock(

View file

@ -2900,6 +2900,14 @@ typedef struct _RTL_CRITICAL_SECTION {
} RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
#endif
NTSYSAPI
PVOID
NTAPI
RtlPcToFileHeader(
IN PVOID PcValue,
PVOID* BaseOfImage
);
NTSYSAPI
VOID
NTAPI

View file

@ -727,7 +727,7 @@ CheckNext:
mov [ebx+KPCR_CURRENT_THREAD], esi
/* Set the thread as running */
mov byte ptr [esi+KTHREAD_STATE], Running
mov byte ptr [esi+KTHREAD_STATE_], Running
#ifdef CONFIG_SMP
/* Disable the idle scheduler and release the PRCB lock */
@ -752,7 +752,7 @@ SameThread:
/* Clear the next thread, and put the thready as ready after lock release */
and dword ptr [ebx+KPCR_PRCB_NEXT_THREAD], 0
and dword ptr [ebx+KPCR_PRCB_PRCB_LOCK], 0
and byte ptr [edi+KTHREAD_STATE], Ready
and byte ptr [edi+KTHREAD_STATE_], Ready
jmp MainLoop
NoNextThread:

View file

@ -2387,7 +2387,7 @@ CheckQuantum:
/* Set us as the current running thread */
mov [ebx+KPCR_CURRENT_THREAD], esi
mov byte ptr [esi+KTHREAD_STATE], Running
mov byte ptr [esi+KTHREAD_STATE_], Running
mov byte ptr [edi+KTHREAD_WAIT_REASON], WrDispatchInt
/* Put thread in ECX and get the PRCB in EDX */