< prev index next >

src/hotspot/os/linux/gc/z/zPhysicalMemoryBacking_linux.hpp

Print this page




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 #ifndef OS_LINUX_GC_Z_ZPHYSICALMEMORYBACKING_LINUX_HPP
  25 #define OS_LINUX_GC_Z_ZPHYSICALMEMORYBACKING_LINUX_HPP
  26 
  27 class ZErrno;
  28 
  29 class ZPhysicalMemoryBacking {
  30 private:
  31   int      _fd;
  32   size_t   _size;
  33   uint64_t _filesystem;
  34   size_t   _block_size;
  35   size_t   _available;
  36   bool     _initialized;
  37 
  38   void warn_available_space(size_t max) const;
  39   void warn_max_map_count(size_t max) const;
  40 
  41   int create_mem_fd(const char* name) const;
  42   int create_file_fd(const char* name) const;
  43   int create_fd(const char* name) const;
  44 
  45   bool is_tmpfs() const;
  46   bool is_hugetlbfs() const;
  47   bool tmpfs_supports_transparent_huge_pages() const;
  48 
  49   ZErrno fallocate_compat_mmap_hugetlbfs(size_t offset, size_t length, bool touch) const;
  50   ZErrno fallocate_compat_mmap_tmpfs(size_t offset, size_t length) const;
  51   ZErrno fallocate_compat_pwrite(size_t offset, size_t length) const;
  52   ZErrno fallocate_fill_hole_compat(size_t offset, size_t length);
  53   ZErrno fallocate_fill_hole_syscall(size_t offset, size_t length);
  54   ZErrno fallocate_fill_hole(size_t offset, size_t length);
  55   ZErrno fallocate_punch_hole(size_t offset, size_t length);
  56   ZErrno split_and_fallocate(bool punch_hole, size_t offset, size_t length);
  57   ZErrno fallocate(bool punch_hole, size_t offset, size_t length);
  58 
  59   bool commit_inner(size_t offset, size_t length);
  60   size_t commit_numa_interleaved(size_t offset, size_t length);
  61   size_t commit_default(size_t offset, size_t length);
  62 
  63 public:
  64   ZPhysicalMemoryBacking(size_t max_capacity);
  65 
  66   bool is_initialized() const;
  67 
  68   void warn_commit_limits(size_t max) const;
  69 
  70   size_t commit(size_t offset, size_t length);
  71   size_t uncommit(size_t offset, size_t length);
  72 
  73   void map(uintptr_t addr, size_t size, uintptr_t offset) const;
  74   void unmap(uintptr_t addr, size_t size) const;
  75 };
  76 
  77 #endif // OS_LINUX_GC_Z_ZPHYSICALMEMORYBACKING_LINUX_HPP


  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 #ifndef OS_LINUX_GC_Z_ZPHYSICALMEMORYBACKING_LINUX_HPP
  25 #define OS_LINUX_GC_Z_ZPHYSICALMEMORYBACKING_LINUX_HPP
  26 
  27 class ZErrno;
  28 
  29 class ZPhysicalMemoryBacking {
  30 private:
  31   int      _fd;
  32   size_t   _size;
  33   uint64_t _filesystem;
  34   size_t   _block_size;
  35   size_t   _available;
  36   bool     _initialized;
  37 
  38   void warn_available_space(size_t max_capacity) const;
  39   void warn_max_map_count(size_t max_capacity) const;
  40 
  41   int create_mem_fd(const char* name) const;
  42   int create_file_fd(const char* name) const;
  43   int create_fd(const char* name) const;
  44 
  45   bool is_tmpfs() const;
  46   bool is_hugetlbfs() const;
  47   bool tmpfs_supports_transparent_huge_pages() const;
  48 
  49   ZErrno fallocate_compat_mmap_hugetlbfs(size_t offset, size_t length, bool touch) const;
  50   ZErrno fallocate_compat_mmap_tmpfs(size_t offset, size_t length) const;
  51   ZErrno fallocate_compat_pwrite(size_t offset, size_t length) const;
  52   ZErrno fallocate_fill_hole_compat(size_t offset, size_t length) const;
  53   ZErrno fallocate_fill_hole_syscall(size_t offset, size_t length) const;
  54   ZErrno fallocate_fill_hole(size_t offset, size_t length) const;
  55   ZErrno fallocate_punch_hole(size_t offset, size_t length) const;
  56   ZErrno split_and_fallocate(bool punch_hole, size_t offset, size_t length) const;
  57   ZErrno fallocate(bool punch_hole, size_t offset, size_t length) const;
  58 
  59   bool commit_inner(size_t offset, size_t length) const;
  60   size_t commit_numa_interleaved(size_t offset, size_t length) const;
  61   size_t commit_default(size_t offset, size_t length) const;
  62 
  63 public:
  64   ZPhysicalMemoryBacking(size_t max_capacity);
  65 
  66   bool is_initialized() const;
  67 
  68   void warn_commit_limits(size_t max_capacity) const;
  69 
  70   size_t commit(size_t offset, size_t length) const;
  71   size_t uncommit(size_t offset, size_t length) const;
  72 
  73   bool map(uintptr_t addr, size_t size, uintptr_t offset) const;
  74   void unmap(uintptr_t addr, size_t size) const;
  75 };
  76 
  77 #endif // OS_LINUX_GC_Z_ZPHYSICALMEMORYBACKING_LINUX_HPP
< prev index next >