Add pool type masks and use them.

svn path=/trunk/; revision=16945
This commit is contained in:
Filip Navara 2005-08-01 11:33:15 +00:00
parent 981faa01eb
commit 9b42911e3d
4 changed files with 18 additions and 26 deletions

View file

@ -307,6 +307,13 @@ MiAllocateSpecialPool (IN POOL_TYPE PoolType,
extern PVOID MmPagedPoolBase; extern PVOID MmPagedPoolBase;
extern ULONG MmPagedPoolSize; extern ULONG MmPagedPoolSize;
#define PAGED_POOL_MASK 1
#define MUST_SUCCEES_POOL_MASK 2
#define CACHE_ALIGNED_POOL_MASK 4
#define QUOTA_POOL_MASK 8
#define SESSION_POOL_MASK 32
#define VERIFIER_POOL_MASK 64
#define MM_PAGED_POOL_SIZE (100*1024*1024) #define MM_PAGED_POOL_SIZE (100*1024*1024)
#define MM_NONPAGED_POOL_SIZE (100*1024*1024) #define MM_NONPAGED_POOL_SIZE (100*1024*1024)

View file

@ -1630,8 +1630,7 @@ ExAllocateNonPagedPoolWithTag(POOL_TYPE Type, ULONG Size, ULONG Tag, PVOID Calle
{ {
alignment = PAGE_SIZE; alignment = PAGE_SIZE;
} }
else if (Type == NonPagedPoolCacheAligned || else if (Type & CACHE_ALIGNED_POOL_MASK)
Type == NonPagedPoolCacheAlignedMustS)
{ {
alignment = MM_CACHE_LINE_SIZE; alignment = MM_CACHE_LINE_SIZE;
} }

View file

@ -30,31 +30,17 @@ EiAllocatePool(POOL_TYPE PoolType,
{ {
PVOID Block; PVOID Block;
/* FIXME: Handle SESSION_POOL_MASK, VERIFIER_POOL_MASK, QUOTA_POOL_MASK */
switch(PoolType) if (PoolType & PAGED_POOL_MASK)
{ {
case NonPagedPool: Block = ExAllocatePagedPoolWithTag(PoolType,NumberOfBytes,Tag);
case NonPagedPoolMustSucceed: }
case NonPagedPoolCacheAligned: else
case NonPagedPoolCacheAlignedMustS: {
Block = Block = ExAllocateNonPagedPoolWithTag(PoolType,NumberOfBytes,Tag,Caller);
ExAllocateNonPagedPoolWithTag(PoolType, }
NumberOfBytes,
Tag,
Caller);
break;
case PagedPool: if ((PoolType & MUST_SUCCEES_POOL_MASK) && Block==NULL)
case PagedPoolCacheAligned:
Block = ExAllocatePagedPoolWithTag(PoolType,NumberOfBytes,Tag);
break;
default:
return(NULL);
};
if ((PoolType==NonPagedPoolMustSucceed ||
PoolType==NonPagedPoolCacheAlignedMustS) && Block==NULL)
{ {
KEBUGCHECK(MUST_SUCCEED_POOL_EMPTY); KEBUGCHECK(MUST_SUCCEED_POOL_EMPTY);
} }

View file

@ -80,7 +80,7 @@ ExAllocatePagedPoolWithTag (IN POOL_TYPE PoolType,
if ( NumberOfBytes >= PAGE_SIZE ) if ( NumberOfBytes >= PAGE_SIZE )
align = 2; align = 2;
else if ( PoolType == PagedPoolCacheAligned ) else if ( PoolType & CACHE_ALIGNED_POOL_MASK )
align = 1; align = 1;
else else
align = 0; align = 0;