Package com.kenai.jffi
Class PageManager
- java.lang.Object
-
- com.kenai.jffi.PageManager
-
- Direct Known Subclasses:
PageManager.Unix
,PageManager.Windows
public abstract class PageManager extends java.lang.Object
Manages allocation, disposal and protection of native memory pages
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
PageManager.SingletonHolder
(package private) static class
PageManager.Unix
(package private) static class
PageManager.Windows
-
Constructor Summary
Constructors Constructor Description PageManager()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract long
allocatePages(int npages, int protection)
Allocates native memory pages.private long
calculatePageSize()
abstract void
freePages(long address, int npages)
Free pages allocated viaallocatePages(int, int)
static PageManager
getInstance()
Gets the page manager for the current platform.long
pageSize()
Gets the system page size.abstract void
protectPages(long address, int npages, int protection)
Sets the protection mask on a memory region.
-
-
-
Field Detail
-
PROT_EXEC
public static final int PROT_EXEC
The memory should be executable- See Also:
- Constant Field Values
-
PROT_READ
public static final int PROT_READ
The memory should be readable- See Also:
- Constant Field Values
-
PROT_WRITE
public static final int PROT_WRITE
The memory should be writable- See Also:
- Constant Field Values
-
foreign
private final Foreign foreign
-
pageSize
private int pageSize
-
-
Method Detail
-
getInstance
public static PageManager getInstance()
Gets the page manager for the current platform.- Returns:
- An instance of
PageManager
-
pageSize
public final long pageSize()
Gets the system page size.- Returns:
- The size of a page on the current system, in bytes.
-
calculatePageSize
private long calculatePageSize()
-
allocatePages
public abstract long allocatePages(int npages, int protection)
Allocates native memory pages. The memory allocated is aligned on a page boundary, and the size of the allocated memory isnpages
*pageSize
.- Parameters:
npages
- The number of pages to allocate.protection
- The initial protection for the page. This must be a bitmask ofPROT_READ
,PROT_WRITE
andPROT_EXEC
.- Returns:
- The native address of the allocated memory.
-
freePages
public abstract void freePages(long address, int npages)
Free pages allocated viaallocatePages(int, int)
- Parameters:
address
- The memory address as returned fromallocatePages(int, int)
npages
- The number of pages to free.
-
protectPages
public abstract void protectPages(long address, int npages, int protection)
Sets the protection mask on a memory region.- Parameters:
address
- The start of the memory region.npages
- The number of pages to protect.protection
- The protection mask.
-
-