8025942: os::Bsd::available_memory() needs implementation

Implement using the host_statistics64() api.

Reviewed-by: dsamersoff, morris, dholmes, coleenp, hseigel, dcubed
This commit is contained in:
Gerard Ziemski 2013-10-12 13:09:18 -04:00 committed by Harold Seigel
parent 6e756e193c
commit db171c7b5d

View file

@ -159,9 +159,21 @@ julong os::available_memory() {
return Bsd::available_memory();
}
// available here means free
julong os::Bsd::available_memory() {
// XXXBSD: this is just a stopgap implementation
return physical_memory() >> 2;
uint64_t available = physical_memory() >> 2;
#ifdef __APPLE__
mach_msg_type_number_t count = HOST_VM_INFO64_COUNT;
vm_statistics64_data_t vmstat;
kern_return_t kerr = host_statistics64(mach_host_self(), HOST_VM_INFO64,
(host_info64_t)&vmstat, &count);
assert(kerr == KERN_SUCCESS,
"host_statistics64 failed - check mach_host_self() and count");
if (kerr == KERN_SUCCESS) {
available = vmstat.free_count * os::vm_page_size();
}
#endif
return available;
}
julong os::physical_memory() {