Merge from amd64 branch

37868 Add CONTEXT flags for x64.
39347 Move rtl byteswap functions to wdm.h and add intrinsic definitions.
41030 fix definition of 64bit SLIST_HEADER. winnt.h: add 64bit SLIST_HEADER.
41071 Fix definition of NdisQueryPacketLength.
43447 Fix MmSizeOfMdl prototype.
43777 Fix definition of KdDebuggerNotPresent for gcc, the MS definition is broken, don't know if it's needed that way for msvc.
44178 Fix definition of _CONTEXT.
44491 Add LIST_ENTRY32/64, STRING32/64
44500 Add NT_TIB32/64.
44623 New definition of C_ASSERT and _STATIC_ASSERT using a function prototype. This way we avoid duplicate definition errors like with a typedef and unused function warning like with the extern.
44631 Fix C_ASSERT yet another time.

svn path=/trunk/; revision=44632
This commit is contained in:
Timo Kreuzer 2009-12-16 23:39:20 +00:00
parent dd8d39902e
commit f8e59069e2
7 changed files with 101 additions and 42 deletions

View file

@ -90,7 +90,7 @@ extern "C" {
} _CrtMemState;
#ifndef _STATIC_ASSERT
#define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr)?1:-1]
#define _STATIC_ASSERT(expr) extern char (*static_assert(void)) [(expr) ? 1 : -1]
#endif
#ifndef _ASSERT

View file

@ -25,7 +25,7 @@ extern "C" {
#endif
#ifndef _STATIC_ASSERT
#define _STATIC_ASSERT(expr) typedef char __static_assert_t[(expr)?1:-1]
#define _STATIC_ASSERT(expr) extern char (*static_assert(void)) [(expr) ? 1 : -1]
#endif
/* Return codes for _heapwalk() */

View file

@ -2001,34 +2001,10 @@ NdisQueryPacketLength(
IN PNDIS_PACKET Packet,
OUT PUINT TotalPacketLength OPTIONAL)
{
if ((TotalPacketLength)) \
{ \
if (!(Packet)->Private.ValidCounts) { \
UINT _Offset; \
UINT _PacketLength; \
PNDIS_BUFFER _NdisBuffer; \
UINT _PhysicalBufferCount = 0; \
UINT _TotalPacketLength = 0; \
UINT _Count = 0; \
\
for (_NdisBuffer = (Packet)->Private.Head; \
_NdisBuffer != (PNDIS_BUFFER)NULL; \
_NdisBuffer = _NdisBuffer->Next) \
{ \
_PhysicalBufferCount += NDIS_BUFFER_TO_SPAN_PAGES(_NdisBuffer); \
NdisQueryBufferOffset(_NdisBuffer, &_Offset, &_PacketLength); \
_TotalPacketLength += _PacketLength; \
_Count++; \
} \
(Packet)->Private.PhysicalCount = _PhysicalBufferCount; \
(Packet)->Private.TotalLength = _TotalPacketLength; \
(Packet)->Private.Count = _Count; \
(Packet)->Private.ValidCounts = TRUE; \
} \
\
if (TotalPacketLength) \
*((PUINT)TotalPacketLength) = (Packet)->Private.TotalLength; \
} \
if (!(Packet)->Private.ValidCounts) \
NdisQueryPacket(Packet, NULL, NULL, NULL, TotalPacketLength); \
else \
*(TotalPacketLength) = (Packet)->Private.TotalLength; \
}

View file

@ -529,7 +529,21 @@ typedef CONST STRING* PCOEM_STRING;
typedef STRING CANSI_STRING;
typedef PSTRING PCANSI_STRING;
typedef struct _STRING32 {
USHORT Length;
USHORT MaximumLength;
ULONG Buffer;
} STRING32, *PSTRING32,
UNICODE_STRING32, *PUNICODE_STRING32,
ANSI_STRING32, *PANSI_STRING32;
typedef struct _STRING64 {
USHORT Length;
USHORT MaximumLength;
ULONGLONG Buffer;
} STRING64, *PSTRING64,
UNICODE_STRING64, *PUNICODE_STRING64,
ANSI_STRING64, *PANSI_STRING64;
//
// LangID and NLS
@ -679,10 +693,7 @@ typedef struct _SINGLE_LIST_ENTRY {
//
// C_ASSERT Definition
//
#define __C_ASSERT_JOIN(X, Y) __C_ASSERT_DO_JOIN(X, Y)
#define __C_ASSERT_DO_JOIN(X, Y) __C_ASSERT_DO_JOIN2(X, Y)
#define __C_ASSERT_DO_JOIN2(X, Y) X##Y
#define C_ASSERT(e) typedef char __C_ASSERT_JOIN(__C_ASSERT__, __LINE__)[(e) ? 1 : -1]
#define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]

View file

@ -4585,6 +4585,32 @@ typedef struct _NT_TIB {
struct _NT_TIB *Self;
} NT_TIB, *PNT_TIB;
typedef struct _NT_TIB32 {
ULONG ExceptionList;
ULONG StackBase;
ULONG StackLimit;
ULONG SubSystemTib;
union {
ULONG FiberData;
ULONG Version;
};
ULONG ArbitraryUserPointer;
ULONG Self;
} NT_TIB32,*PNT_TIB32;
typedef struct _NT_TIB64 {
ULONG64 ExceptionList;
ULONG64 StackBase;
ULONG64 StackLimit;
ULONG64 SubSystemTib;
union {
ULONG64 FiberData;
ULONG Version;
};
ULONG64 ArbitraryUserPointer;
ULONG64 Self;
} NT_TIB64,*PNT_TIB64;
typedef enum _PROCESSINFOCLASS {
ProcessBasicInformation,
ProcessQuotaLimits,
@ -5236,7 +5262,7 @@ typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
USHORT SegFs;
USHORT SegGs;
USHORT SegSs;
USHORT EFlags;
ULONG EFlags;
/* Debug */
ULONG64 Dr0;
@ -9364,7 +9390,7 @@ MmSecureVirtualMemory(
IN ULONG ProbeMode);
NTKERNELAPI
ULONG
SIZE_T
NTAPI
MmSizeOfMdl(
IN PVOID Base,

View file

@ -151,6 +151,22 @@ typedef struct _CSTRING
CONST CHAR *Buffer;
} CSTRING, *PCSTRING;
typedef struct _STRING32 {
USHORT Length;
USHORT MaximumLength;
ULONG Buffer;
} STRING32, *PSTRING32,
UNICODE_STRING32, *PUNICODE_STRING32,
ANSI_STRING32, *PANSI_STRING32;
typedef struct _STRING64 {
USHORT Length;
USHORT MaximumLength;
ULONGLONG Buffer;
} STRING64, *PSTRING64,
UNICODE_STRING64, *PUNICODE_STRING64,
ANSI_STRING64, *PANSI_STRING64;
#endif
typedef struct _OBJECT_ATTRIBUTES

View file

@ -226,12 +226,7 @@ typedef BYTE FCHAR;
typedef WORD FSHORT;
typedef DWORD FLONG;
#define __C_ASSERT_JOIN(X, Y) __C_ASSERT_DO_JOIN(X, Y)
#define __C_ASSERT_DO_JOIN(X, Y) __C_ASSERT_DO_JOIN2(X, Y)
#define __C_ASSERT_DO_JOIN2(X, Y) X##Y
#define C_ASSERT(e) typedef char __C_ASSERT_JOIN(__C_ASSERT__, __LINE__)[(e) ? 1 : -1]
#define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1]
#include "intrin.h"
@ -3235,6 +3230,15 @@ typedef struct _LIST_ENTRY {
struct _LIST_ENTRY *Flink;
struct _LIST_ENTRY *Blink;
} LIST_ENTRY,*PLIST_ENTRY;
typedef struct _LIST_ENTRY32 {
DWORD Flink;
DWORD Blink;
} LIST_ENTRY32,*PLIST_ENTRY32;
typedef struct _LIST_ENTRY64 {
ULONGLONG Flink;
ULONGLONG Blink;
} LIST_ENTRY64,*PLIST_ENTRY64;
typedef struct _SINGLE_LIST_ENTRY {
struct _SINGLE_LIST_ENTRY *Next;
} SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY;
@ -4157,6 +4161,32 @@ typedef struct _NT_TIB {
struct _NT_TIB *Self;
} NT_TIB,*PNT_TIB;
typedef struct _NT_TIB32 {
DWORD ExceptionList;
DWORD StackBase;
DWORD StackLimit;
DWORD SubSystemTib;
union {
DWORD FiberData;
DWORD Version;
};
DWORD ArbitraryUserPointer;
DWORD Self;
} NT_TIB32,*PNT_TIB32;
typedef struct _NT_TIB64 {
DWORD64 ExceptionList;
DWORD64 StackBase;
DWORD64 StackLimit;
DWORD64 SubSystemTib;
union {
DWORD64 FiberData;
DWORD Version;
};
DWORD64 ArbitraryUserPointer;
DWORD64 Self;
} NT_TIB64,*PNT_TIB64;
typedef struct _REPARSE_GUID_DATA_BUFFER {
DWORD ReparseTag;
WORD ReparseDataLength;