MPHEAP.H

/*++ 

Copyright (c) 1992 Microsoft Corporation

Module Name:

mpheap.h

Abstract:

Public header file for MP heap package

Author:

John Vert (jvert) 10-Jul-1995

Revision History:

--*/

//
// Valid heap creation options
//
#define MPHEAP_GROWABLE HEAP_GROWABLE
#define MPHEAP_REALLOC_IN_PLACE_ONLY HEAP_REALLOC_IN_PLACE_ONLY
#define MPHEAP_TAIL_CHECKING_ENABLED HEAP_TAIL_CHECKING_ENABLED
#define MPHEAP_FREE_CHECKING_ENABLED HEAP_FREE_CHECKING_ENABLED
#define MPHEAP_DISABLE_COALESCE_ON_FREE HEAP_DISABLE_COALESCE_ON_FREE
#define MPHEAP_ZERO_MEMORY HEAP_ZERO_MEMORY
#define MPHEAP_COLLECT_STATS 0x10000000

HANDLE
WINAPI
MpHeapCreate(
DWORD flOptions,
DWORD dwInitialSize,
DWORD dwParallelism
);

BOOL
WINAPI
MpHeapDestroy(
HANDLE hMpHeap
);

BOOL
WINAPI
MpHeapValidate(
HANDLE hMpHeap,
LPVOID lpMem
);

UINT
WINAPI
MpHeapCompact(
HANDLE hMpHeap
);

LPVOID
WINAPI
MpHeapAlloc(
HANDLE hMpHeap,
DWORD flOptions,
DWORD dwBytes
);

LPVOID
WINAPI
MpHeapReAlloc(
HANDLE hMpHeap,
LPVOID lpMem,
DWORD dwBytes
);

BOOL
WINAPI
MpHeapFree(
HANDLE hMpHeap,
LPVOID lpMem
);

//
// Statistics structure
//
typedef struct _MPHEAP_STATISTICS {
DWORD Contention;
DWORD TotalAllocates;
DWORD TotalFrees;
DWORD LookasideAllocates;
DWORD LookasideFrees;
DWORD DelayedFrees;
} MPHEAP_STATISTICS, *LPMPHEAP_STATISTICS;

DWORD
MpHeapGetStatistics(
HANDLE hMpHeap,
LPDWORD lpdwSize,
MPHEAP_STATISTICS Statistics[]
);