Class 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
    • 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
    • Constructor Detail

      • PageManager

        public PageManager()
    • 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 is npages * pageSize.
        Parameters:
        npages - The number of pages to allocate.
        protection - The initial protection for the page. This must be a bitmask of PROT_READ, PROT_WRITE and PROT_EXEC.
        Returns:
        The native address of the allocated memory.
      • freePages

        public abstract void freePages​(long address,
                                       int npages)
        Free pages allocated via allocatePages(int, int)
        Parameters:
        address - The memory address as returned from allocatePages(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.