[BACK]Return to sort.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / sort

Diff for /src/usr.bin/sort/sort.c between version 1.47 and 1.48

version 1.47, 2015/03/20 00:26:38 version 1.48, 2015/03/20 23:04:07
Line 27 
Line 27 
  * SUCH DAMAGE.   * SUCH DAMAGE.
  */   */
   
   #include <sys/resource.h>
 #include <sys/stat.h>  #include <sys/stat.h>
   #include <sys/sysctl.h>
 #include <sys/types.h>  #include <sys/types.h>
   
 #include <err.h>  #include <err.h>
Line 205 
Line 207 
 static void  static void
 set_hw_params(void)  set_hw_params(void)
 {  {
         long pages, psize;          long long user_memory;
           struct rlimit rl;
           size_t len;
           int mib[] = { CTL_HW, HW_USERMEM64 };
   
         pages = sysconf(_SC_PHYS_PAGES);          /* Get total user (non-kernel) memory. */
         if (pages < 1) {          len = sizeof(user_memory);
                 warn("sysconf pages");          if (sysctl(mib, 2, &user_memory, &len, NULL, 0) == -1)
                 pages = 1;              user_memory = -1;
         }  
         psize = sysconf(_SC_PAGESIZE);  
         if (psize < 1) {  
                 warn("sysconf psize");  
                 psize = 4096;  
         }  
   
         free_memory = (unsigned long long) pages * (unsigned long long) psize;          /* Increase our data size to the max */
         available_free_memory = free_memory / 2;          if (getrlimit(RLIMIT_DATA, &rl) == 0) {
                   free_memory = (unsigned long long)rl.rlim_cur;
                   rl.rlim_cur = rl.rlim_max;
                   if (setrlimit(RLIMIT_DATA, &rl) == 0) {
                           free_memory = (unsigned long long)rl.rlim_max;
                   } else {
                           warn("Can't set resource limit to max data size");
                   }
           } else
                   warn("Can't get resource limit for data size");
   
         if (available_free_memory < 1024)          /* We prefer to use temp files rather than swap space. */
                 available_free_memory = 1024;          if (user_memory != -1 && free_memory > user_memory)
                   free_memory = user_memory;
   
           available_free_memory = free_memory / 2;
 }  }
   
 /*  /*

Legend:
Removed from v.1.47  
changed lines
  Added in v.1.48