mirror of
https://github.com/reactos/reactos.git
synced 2024-12-29 02:25:17 +00:00
- Fix compilation error in KeIpiGenericCall.
- Revert my last changes in RPoolMgr.h. Currently they cause more harm than good. :( svn path=/trunk/; revision=12972
This commit is contained in:
parent
af3dff11b7
commit
030b0867f6
2 changed files with 20 additions and 19 deletions
|
@ -157,7 +157,7 @@ KiIpiSendPacket(ULONG TargetSet, VOID STDCALL (*WorkerRoutine)(PVOID), PVOID Arg
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
KeIpiGenericCall(VOID STDCALL (*Function)(PVOID), PVOID Argument)
|
KeIpiGenericCall(VOID (STDCALL *Function)(PVOID), PVOID Argument)
|
||||||
{
|
{
|
||||||
KIRQL oldIrql;
|
KIRQL oldIrql;
|
||||||
ULONG TargetSet;
|
ULONG TargetSet;
|
||||||
|
|
|
@ -12,18 +12,17 @@
|
||||||
#define RPOOLMGR_H
|
#define RPOOLMGR_H
|
||||||
|
|
||||||
typedef unsigned long rulong;
|
typedef unsigned long rulong;
|
||||||
typedef ULONG_PTR rulong_ptr;
|
|
||||||
|
|
||||||
#define R_IS_POOL_PTR(pool,ptr) (void*)(ptr) >= pool->UserBase && (rulong_ptr)(ptr) < ((rulong_ptr)pool->UserBase + pool->UserSize)
|
#define R_IS_POOL_PTR(pool,ptr) (void*)(ptr) >= pool->UserBase && (ULONG_PTR)(ptr) < ((ULONG_PTR)pool->UserBase + pool->UserSize)
|
||||||
#define R_ASSERT_PTR(pool,ptr) ASSERT( R_IS_POOL_PTR(pool,ptr) )
|
#define R_ASSERT_PTR(pool,ptr) ASSERT( R_IS_POOL_PTR(pool,ptr) )
|
||||||
#define R_ASSERT_SIZE(pool,sz) ASSERT( sz > (sizeof(R_USED)+2*R_RZ) && sz >= sizeof(R_FREE) && sz < pool->UserSize )
|
#define R_ASSERT_SIZE(pool,sz) ASSERT( sz > (sizeof(R_USED)+2*R_RZ) && sz >= sizeof(R_FREE) && sz < pool->UserSize )
|
||||||
|
|
||||||
#ifndef R_ROUND_UP
|
#ifndef R_ROUND_UP
|
||||||
#define R_ROUND_UP(x,s) ((PVOID)(((rulong_ptr)(x)+(s)-1) & ~((rulong_ptr)(s)-1)))
|
#define R_ROUND_UP(x,s) ((PVOID)(((ULONG_PTR)(x)+(s)-1) & ~((ULONG_PTR)(s)-1)))
|
||||||
#endif//R_ROUND_UP
|
#endif//R_ROUND_UP
|
||||||
|
|
||||||
#ifndef R_ROUND_DOWN
|
#ifndef R_ROUND_DOWN
|
||||||
#define R_ROUND_DOWN(x,s) ((PVOID)(((rulong_ptr)(x)) & ~((rulong_ptr)(s)-1)))
|
#define R_ROUND_DOWN(x,s) ((PVOID)(((ULONG_PTR)(x)) & ~((ULONG_PTR)(s)-1)))
|
||||||
#endif//R_ROUND_DOWN
|
#endif//R_ROUND_DOWN
|
||||||
|
|
||||||
#ifndef R_QUEMIN
|
#ifndef R_QUEMIN
|
||||||
|
@ -78,9 +77,9 @@ typedef struct _R_FREE
|
||||||
#endif//R_MAGIC
|
#endif//R_MAGIC
|
||||||
rulong PrevSize : 30;
|
rulong PrevSize : 30;
|
||||||
rulong Status : 2;
|
rulong Status : 2;
|
||||||
rulong_ptr Size;
|
rulong Size;
|
||||||
#if R_STACK
|
#if R_STACK
|
||||||
rulong_ptr LastOwnerStack[R_STACK];
|
ULONG_PTR LastOwnerStack[R_STACK];
|
||||||
#endif//R_STACK
|
#endif//R_STACK
|
||||||
struct _R_FREE* NextFree;
|
struct _R_FREE* NextFree;
|
||||||
struct _R_FREE* PrevFree;
|
struct _R_FREE* PrevFree;
|
||||||
|
@ -94,9 +93,9 @@ typedef struct _R_USED
|
||||||
#endif//R_MAGIC
|
#endif//R_MAGIC
|
||||||
rulong PrevSize : 30;
|
rulong PrevSize : 30;
|
||||||
rulong Status : 2;
|
rulong Status : 2;
|
||||||
rulong_ptr Size;
|
rulong Size;
|
||||||
#if R_STACK
|
#if R_STACK
|
||||||
rulong_ptr LastOwnerStack[R_STACK];
|
ULONG_PTR LastOwnerStack[R_STACK];
|
||||||
#endif//R_STACK
|
#endif//R_STACK
|
||||||
struct _R_USED* NextUsed;
|
struct _R_USED* NextUsed;
|
||||||
#if R_RZ
|
#if R_RZ
|
||||||
|
@ -116,9 +115,9 @@ R_QUE, *PR_QUE;
|
||||||
typedef struct _R_POOL
|
typedef struct _R_POOL
|
||||||
{
|
{
|
||||||
void* PoolBase;
|
void* PoolBase;
|
||||||
rulong_ptr PoolSize;
|
rulong PoolSize;
|
||||||
void* UserBase;
|
void* UserBase;
|
||||||
rulong_ptr UserSize;
|
rulong UserSize;
|
||||||
rulong Alignments[3];
|
rulong Alignments[3];
|
||||||
PR_FREE FirstFree, LastFree;
|
PR_FREE FirstFree, LastFree;
|
||||||
R_QUE Que[R_QUECOUNT][3];
|
R_QUE Que[R_QUECOUNT][3];
|
||||||
|
@ -148,7 +147,7 @@ RiPrintLastOwner ( PR_USED Block )
|
||||||
#endif//R_STACK
|
#endif//R_STACK
|
||||||
|
|
||||||
static int
|
static int
|
||||||
RQueWhich ( rulong_ptr size )
|
RQueWhich ( rulong size )
|
||||||
{
|
{
|
||||||
rulong que, quesize;
|
rulong que, quesize;
|
||||||
for ( que=0, quesize=16; que < R_QUECOUNT; que++, quesize<<=1 )
|
for ( que=0, quesize=16; que < R_QUECOUNT; que++, quesize<<=1 )
|
||||||
|
@ -288,7 +287,7 @@ RFreeInit ( void* memory )
|
||||||
}
|
}
|
||||||
|
|
||||||
PR_POOL
|
PR_POOL
|
||||||
RPoolInit ( void* PoolBase, rulong_ptr PoolSize, int align1, int align2, int align3 )
|
RPoolInit ( void* PoolBase, rulong PoolSize, int align1, int align2, int align3 )
|
||||||
{
|
{
|
||||||
int align, que;
|
int align, que;
|
||||||
PR_POOL pool = (PR_POOL)PoolBase;
|
PR_POOL pool = (PR_POOL)PoolBase;
|
||||||
|
@ -568,7 +567,7 @@ RPoolRedZoneCheck ( PR_POOL pool, const char* file, int line )
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
RSetSize ( PR_POOL pool, PR_FREE Block, rulong_ptr NewSize, PR_FREE NextBlock )
|
RSetSize ( PR_POOL pool, PR_FREE Block, rulong NewSize, PR_FREE NextBlock )
|
||||||
{
|
{
|
||||||
R_ASSERT_PTR(pool,Block);
|
R_ASSERT_PTR(pool,Block);
|
||||||
ASSERT ( NewSize < pool->UserSize );
|
ASSERT ( NewSize < pool->UserSize );
|
||||||
|
@ -581,7 +580,7 @@ RSetSize ( PR_POOL pool, PR_FREE Block, rulong_ptr NewSize, PR_FREE NextBlock )
|
||||||
}
|
}
|
||||||
|
|
||||||
static PR_FREE
|
static PR_FREE
|
||||||
RFreeSplit ( PR_POOL pool, PR_FREE Block, rulong_ptr NewSize )
|
RFreeSplit ( PR_POOL pool, PR_FREE Block, rulong NewSize )
|
||||||
{
|
{
|
||||||
PR_FREE NewBlock = (PR_FREE)((char*)Block + NewSize);
|
PR_FREE NewBlock = (PR_FREE)((char*)Block + NewSize);
|
||||||
RSetSize ( pool, NewBlock, Block->Size - NewSize, NULL );
|
RSetSize ( pool, NewBlock, Block->Size - NewSize, NULL );
|
||||||
|
@ -655,7 +654,7 @@ RiUsedInit ( PR_USED Block, rulong Tag )
|
||||||
#define RiUsedInitRedZone(Block,UserSize)
|
#define RiUsedInitRedZone(Block,UserSize)
|
||||||
#else//R_RZ
|
#else//R_RZ
|
||||||
static void
|
static void
|
||||||
RiUsedInitRedZone ( PR_USED Block, rulong_ptr UserSize )
|
RiUsedInitRedZone ( PR_USED Block, rulong UserSize )
|
||||||
{
|
{
|
||||||
// write out buffer-overrun detection bytes
|
// write out buffer-overrun detection bytes
|
||||||
char* Addr = (char*)RHdrToBody(Block);
|
char* Addr = (char*)RHdrToBody(Block);
|
||||||
|
@ -669,7 +668,7 @@ RiUsedInitRedZone ( PR_USED Block, rulong_ptr UserSize )
|
||||||
#endif//R_RZ
|
#endif//R_RZ
|
||||||
|
|
||||||
static void*
|
static void*
|
||||||
RPoolAlloc ( PR_POOL pool, rulong_ptr NumberOfBytes, rulong Tag, rulong align )
|
RPoolAlloc ( PR_POOL pool, rulong NumberOfBytes, rulong Tag, rulong align )
|
||||||
{
|
{
|
||||||
PR_USED NewBlock;
|
PR_USED NewBlock;
|
||||||
PR_FREE BestBlock,
|
PR_FREE BestBlock,
|
||||||
|
@ -678,8 +677,10 @@ RPoolAlloc ( PR_POOL pool, rulong_ptr NumberOfBytes, rulong Tag, rulong align )
|
||||||
BestPreviousBlock,
|
BestPreviousBlock,
|
||||||
CurrentBlock;
|
CurrentBlock;
|
||||||
void* BestAlignedAddr;
|
void* BestAlignedAddr;
|
||||||
rulong_ptr que, queBytes = NumberOfBytes;
|
int que,
|
||||||
rulong BlockSize, Alignment;
|
queBytes = NumberOfBytes;
|
||||||
|
rulong BlockSize,
|
||||||
|
Alignment;
|
||||||
int que_reclaimed = 0;
|
int que_reclaimed = 0;
|
||||||
|
|
||||||
ASSERT ( pool );
|
ASSERT ( pool );
|
||||||
|
|
Loading…
Reference in a new issue