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; |