101 lines
2.3 KiB
C++
101 lines
2.3 KiB
C++
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
Copyright (c) 1993-2000 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
rpcssm.hxx
|
|
|
|
Abstract:
|
|
|
|
Private definitions for the rpcssm memory package
|
|
|
|
Author:
|
|
|
|
Ryszard K. Kott (ryszardk) created June 29, 1994.
|
|
|
|
Revision History:
|
|
|
|
-------------------------------------------------------------------*/
|
|
|
|
#ifndef __RPCSSM_HXX__
|
|
#define __RPCSSM_HXX__
|
|
|
|
#define ALIGN_TO_8(x) (size_t)(((x)+7) & 0xfffffff8)
|
|
|
|
|
|
#define DESCR_ARRAY_SIZE 1024
|
|
#define DESCR_ARRAY_INCR 1024
|
|
|
|
#define ENABLE_STACK_SIZE 16
|
|
#define ENABLE_STACK_INCR 16
|
|
|
|
// Enable stack keeps longs.
|
|
// Descr block stack keeps descr blocks.
|
|
|
|
typedef struct _ALLOC_BLOCK_DESCR
|
|
{
|
|
char * AllocationBlock;
|
|
char * FirstFree;
|
|
unsigned long SizeLeft;
|
|
|
|
#if defined( DEBUGRPC )
|
|
unsigned long Counter;
|
|
#endif
|
|
|
|
} ALLOC_BLOCK_DESCR, * PALLOC_BLOCK_DESCR;
|
|
|
|
|
|
// Initial boundle of Win32 stacks: we save an allocation at the expense
|
|
// of keeping initial block around.
|
|
// Of course we hope that initial block is good enough for most apps.
|
|
|
|
typedef struct _INIT_STACKS_BLOCK
|
|
{
|
|
unsigned long EnableStack[ ENABLE_STACK_SIZE ];
|
|
ALLOC_BLOCK_DESCR DescrStack[ DESCR_ARRAY_SIZE ];
|
|
} INIT_STACKS_BLOCK;
|
|
|
|
|
|
typedef struct _ALLOCATION_CONTEXT
|
|
{
|
|
RPC_CLIENT_ALLOC * ClientAlloc;
|
|
RPC_CLIENT_FREE * ClientFree;
|
|
unsigned int EnableCount;
|
|
|
|
CRITICAL_SECTION CriticalSection;
|
|
unsigned long ThreadCount;
|
|
|
|
INIT_STACKS_BLOCK * pInitialStacks;
|
|
|
|
unsigned long * pEnableStack;
|
|
unsigned long StackMax;
|
|
unsigned long StackTop;
|
|
|
|
PALLOC_BLOCK_DESCR pBlockDescr;
|
|
unsigned long DescrSize;
|
|
unsigned long FFIndex;
|
|
|
|
DWORD PageSize;
|
|
DWORD Granularity;
|
|
|
|
} ALLOCATION_CONTEXT, * PALLOCATION_CONTEXT;
|
|
|
|
#ifdef NEWNDR_INTERNAL
|
|
|
|
#undef RequestGlobalMutex
|
|
#undef ClearGlobalMutex
|
|
|
|
#define RequestGlobalMutex()
|
|
#define ClearGlobalMutex()
|
|
|
|
#endif // NEWNDR_INTERNAL
|
|
|
|
|
|
PALLOCATION_CONTEXT GetAllocContext ();
|
|
void SetAllocContext ( IN PALLOCATION_CONTEXT AllocContext );
|
|
|
|
|
|
#endif // __RPCSSM_HXX__
|
|
|