Patch 8.0.1551
Problem: On Mac 'maxmemtot' is set to a weird value.
Solution: For Mac use total memory and subtract system memory. For other
systems accept both a 32 bit and 64 bit result. (Ozaki Kiichi,
closes #2646)
Files: src/os_unix.c
*** ../vim-8.0.1550/src/os_unix.c 2018-02-10 18:45:21.080822072 +0100
--- src/os_unix.c 2018-02-27 17:56:17.200903122 +0100
***************
*** 565,570 ****
--- 565,575 ----
# if defined(HAVE_SYS_SYSINFO_H) && defined(HAVE_SYSINFO)
# include <sys/sysinfo.h>
# endif
+ # ifdef MACOS_X_DARWIN
+ # include <mach/mach_host.h>
+ # include <mach/mach_port.h>
+ # include <mach/vm_page_size.h>
+ # endif
/*
* Return total amount of memory available in Kbyte.
***************
*** 576,591 ****
long_u mem = 0;
long_u shiftright = 10; /* how much to shift "mem" right for Kbyte */
# ifdef HAVE_SYSCTL
! int mib[2], physmem;
! size_t len;
! /* BSD way of getting the amount of RAM available. */
! mib[0] = CTL_HW;
! mib[1] = HW_USERMEM;
! len = sizeof(physmem);
! if (sysctl(mib, 2, &physmem, &len, NULL, 0) == 0)
! mem = (long_u)physmem;
# endif
# if defined(HAVE_SYS_SYSINFO_H) && defined(HAVE_SYSINFO)
--- 581,650 ----
long_u mem = 0;
long_u shiftright = 10; /* how much to shift "mem" right for Kbyte */
+ # ifdef MACOS_X_DARWIN
+ {
+ /* Mac (Darwin) way of getting the amount of RAM available */
+ mach_port_t host = mach_host_self();
+ kern_return_t kret;
+ # ifdef HOST_VM_INFO64
+ struct vm_statistics64 vm_stat;
+ natural_t count = HOST_VM_INFO64_COUNT;
+
+ kret = host_statistics64(host, HOST_VM_INFO64,
+ (host_info64_t)&vm_stat, &count);
+ # else
+ struct vm_statistics vm_stat;
+ natural_t count = HOST_VM_INFO_COUNT;
+
+ kret = host_statistics(host, HOST_VM_INFO,
+ (host_info_t)&vm_stat, &count);
+ # endif
+ if (kret == KERN_SUCCESS)
+ /* get the amount of user memory by summing each usage */
+ mem = (long_u)(vm_stat.free_count + vm_stat.active_count
+ + vm_stat.inactive_count
+ # ifdef MAC_OS_X_VERSION_10_9
+ + vm_stat.compressor_page_count
+ # endif
+ ) * getpagesize();
+ mach_port_deallocate(mach_task_self(), host);
+ }
+ # endif
+
# ifdef HAVE_SYSCTL
! if (mem == 0)
! {
! /* BSD way of getting the amount of RAM available. */
! int mib[2];
! size_t len = sizeof(long_u);
! # ifdef HW_USERMEM64
! long_u physmem;
! # else
! /* sysctl() may return 32 bit or 64 bit, accept both */
! union {
! int_u u32;
! long_u u64;
! } physmem;
! # endif
! mib[0] = CTL_HW;
! # ifdef HW_USERMEM64
! mib[1] = HW_USERMEM64;
! # else
! mib[1] = HW_USERMEM;
! # endif
! if (sysctl(mib, 2, &physmem, &len, NULL, 0) == 0)
! {
! # ifdef HW_USERMEM64
! mem = (long_u)physmem;
! # else
! if (len == sizeof(physmem.u64))
! mem = (long_u)physmem.u64;
! else
! mem = (long_u)physmem.u32;
! # endif
! }
! }
# endif
# if defined(HAVE_SYS_SYSINFO_H) && defined(HAVE_SYSINFO)
*** ../vim-8.0.1550/src/version.c 2018-02-27 17:25:48.020151886 +0100
--- src/version.c 2018-02-27 17:57:13.076536564 +0100
***************
*** 780,781 ****
--- 780,783 ----
{ /* Add new patch number below this line */
+ /**/
+ 1551,
/**/
--
TERRY GILLIAM PLAYED: PATSY (ARTHUR'S TRUSTY STEED), THE GREEN KNIGHT
SOOTHSAYER, BRIDGEKEEPER, SIR GAWAIN (THE FIRST TO BE
KILLED BY THE RABBIT)
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.