hotspot/src/os/bsd/vm/os_bsd.cpp
changeset 17880 17f3d10c297f
parent 17134 d58219af8d68
child 17882 07a153bc43ad
equal deleted inserted replaced
17879:49ac5c39b28f 17880:17f3d10c297f
   624 
   624 
   625 
   625 
   626 //////////////////////////////////////////////////////////////////////////////
   626 //////////////////////////////////////////////////////////////////////////////
   627 // create new thread
   627 // create new thread
   628 
   628 
   629 static address highest_vm_reserved_address();
       
   630 
       
   631 // check if it's safe to start a new thread
   629 // check if it's safe to start a new thread
   632 static bool _thread_safety_check(Thread* thread) {
   630 static bool _thread_safety_check(Thread* thread) {
   633   return true;
   631   return true;
   634 }
   632 }
   635 
   633 
  2110 
  2108 
  2111 bool os::pd_release_memory(char* addr, size_t size) {
  2109 bool os::pd_release_memory(char* addr, size_t size) {
  2112   return anon_munmap(addr, size);
  2110   return anon_munmap(addr, size);
  2113 }
  2111 }
  2114 
  2112 
  2115 static address highest_vm_reserved_address() {
       
  2116   return _highest_vm_reserved_address;
       
  2117 }
       
  2118 
       
  2119 static bool bsd_mprotect(char* addr, size_t size, int prot) {
  2113 static bool bsd_mprotect(char* addr, size_t size, int prot) {
  2120   // Bsd wants the mprotect address argument to be page aligned.
  2114   // Bsd wants the mprotect address argument to be page aligned.
  2121   char* bottom = (char*)align_size_down((intptr_t)addr, os::Bsd::page_size());
  2115   char* bottom = (char*)align_size_down((intptr_t)addr, os::Bsd::page_size());
  2122 
  2116 
  2123   // According to SUSv3, mprotect() should only be used with mappings
  2117   // According to SUSv3, mprotect() should only be used with mappings
  2155   return bsd_mprotect(addr, size, PROT_READ|PROT_WRITE);
  2149   return bsd_mprotect(addr, size, PROT_READ|PROT_WRITE);
  2156 }
  2150 }
  2157 
  2151 
  2158 bool os::Bsd::hugetlbfs_sanity_check(bool warn, size_t page_size) {
  2152 bool os::Bsd::hugetlbfs_sanity_check(bool warn, size_t page_size) {
  2159   return false;
  2153   return false;
  2160 }
       
  2161 
       
  2162 /*
       
  2163 * Set the coredump_filter bits to include largepages in core dump (bit 6)
       
  2164 *
       
  2165 * From the coredump_filter documentation:
       
  2166 *
       
  2167 * - (bit 0) anonymous private memory
       
  2168 * - (bit 1) anonymous shared memory
       
  2169 * - (bit 2) file-backed private memory
       
  2170 * - (bit 3) file-backed shared memory
       
  2171 * - (bit 4) ELF header pages in file-backed private memory areas (it is
       
  2172 *           effective only if the bit 2 is cleared)
       
  2173 * - (bit 5) hugetlb private memory
       
  2174 * - (bit 6) hugetlb shared memory
       
  2175 */
       
  2176 static void set_coredump_filter(void) {
       
  2177   FILE *f;
       
  2178   long cdm;
       
  2179 
       
  2180   if ((f = fopen("/proc/self/coredump_filter", "r+")) == NULL) {
       
  2181     return;
       
  2182   }
       
  2183 
       
  2184   if (fscanf(f, "%lx", &cdm) != 1) {
       
  2185     fclose(f);
       
  2186     return;
       
  2187   }
       
  2188 
       
  2189   rewind(f);
       
  2190 
       
  2191   if ((cdm & LARGEPAGES_BIT) == 0) {
       
  2192     cdm |= LARGEPAGES_BIT;
       
  2193     fprintf(f, "%#lx", cdm);
       
  2194   }
       
  2195 
       
  2196   fclose(f);
       
  2197 }
  2154 }
  2198 
  2155 
  2199 // Large page support
  2156 // Large page support
  2200 
  2157 
  2201 static size_t _large_page_size = 0;
  2158 static size_t _large_page_size = 0;