blob: ee6d04f099ff6727aeadfeca0c32911bb26828bf [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.
*/
void 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();
void *RemapPage(void *va);
/* AllocateNPages - */
void *AllocateNPages(unsigned Num);
void MprotectPage(void *Page, unsigned NumPages);
/* FreePage - This function returns the specified page to the pagemanager for
/// future allocation.
*/
void FreePage(void *Page);
#endif