To: vim_dev@googlegroups.com Subject: Patch 8.0.1551 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ 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 # endif + # ifdef MACOS_X_DARWIN + # include + # include + # include + # 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 -- Bram@Moolenaar.net -- 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 ///