blob: a04b3daea6ced08f622c4fe0312082ad2376809e [file] [log] [blame]
//===- PageManager.h - Allocates memory on page boundaries ------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by the LLVM research group and is distributed under
// the University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file defines the interface used by the pool allocator to allocate memory
// on large alignment boundaries.
//
//===----------------------------------------------------------------------===//
#ifndef PAGEMANAGER_H
#define PAGEMANAGER_H
/// InitializePageManager - This function must be called before any other page
/// manager accesses are performed. It may be called multiple times.
///
unsigned int InitializePageManager();
/// PageSize - Contains the size of the unit of memory allocated by
/// AllocatePage. This is a value that is typically several kilobytes in size,
/// and is guaranteed to be a power of two.
///
extern unsigned PageSize;
/// AllocatePage - This function returns a chunk of memory with size and
/// alignment specified by getPageSize().
void *AllocatePage();
/// FreePage - This function returns the specified page to the pagemanager for
/// future allocation.
void FreePage(void *Page);
/// GetPages - Just allocate the specified pages on a page boundary. This is
/// a hack for large arrays.
void * GetPages (unsigned NumPages);
#endif