Package com.kenai.jffi
Class PageManager
java.lang.Object
com.kenai.jffi.PageManager
- Direct Known Subclasses:
PageManager.Unix
,PageManager.Windows
Manages allocation, disposal and protection of native memory pages
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static final class
(package private) static final class
(package private) static final class
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract long
allocatePages
(int npages, int protection) Allocates native memory pages.private long
abstract void
freePages
(long address, int npages) Free pages allocated viaallocatePages(int, int)
static PageManager
Gets the page manager for the current platform.final 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 Details
-
PROT_EXEC
public static final int PROT_EXECThe memory should be executable- See Also:
-
PROT_READ
public static final int PROT_READThe memory should be readable- See Also:
-
PROT_WRITE
public static final int PROT_WRITEThe memory should be writable- See Also:
-
foreign
-
pageSize
private int pageSize
-
-
Constructor Details
-
PageManager
public PageManager()
-
-
Method Details
-
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.
-