home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / os / linux / 8371 < prev    next >
Encoding:
Internet Message Format  |  1992-08-15  |  2.7 KB

  1. Path: sparky!uunet!cs.utexas.edu!torn!cunews!revcan!software.mitel.com!sharman!sharman
  2. From: sharman@Software.Mitel.COM (Richard Sharman)
  3. Newsgroups: comp.os.linux
  4. Subject: a patch for free in the ps-0.97 package
  5. Message-ID: <SHARMAN.92Aug16012235@sharman.Software.Mitel.COM>
  6. Date: 16 Aug 92 05:22:35 GMT
  7. Sender: sharman@Software.Mitel.COM
  8. Organization: Mitel. Kanata (Ontario). Canada.
  9. Lines: 81
  10.  
  11. When I compiled and ran the latest `free' from the ps-0.97 package,
  12. I got the following errors:
  13.  
  14. symbol '_paging_pages' not found
  15. trying to read invalid address
  16.  
  17. The following patches seem to agree with the figures I get 
  18. with shift scroll lock.  [If I run the -p option, and
  19. stop the program and do a shift scroll lock, the numbers agree.]
  20. (The changed code is essentially a copy of that in mm/memory.c.)
  21.  
  22. *** origs/free.c    Sun Aug 16 00:28:18 1992
  23. --- free.c    Sun Aug 16 00:42:57 1992
  24. ***************
  25. *** 120,146 ****
  26.   show_memory()
  27.   {
  28.       unsigned char *memmap;
  29. !     unsigned used=0, freepg=0, shared=0;
  30. !     int i, pages, paging_pages;
  31.   
  32.       pages = (get_kword(k_addr("_high_memory")) - 
  33.            get_kword(k_addr("_low_memory"))) >> 12;
  34. !     paging_pages = get_kword(k_addr("_paging_pages"));
  35.       memmap = (unsigned char *) xmalloc(pages);
  36. !     kmemread(memmap, get_kword(k_addr("_mem_map")), pages);
  37. !     for (i = 0; i < paging_pages; ++i)
  38. !     switch (memmap[i]) {
  39. !         case 0: ++freepg; break;
  40. !         case USED: break;
  41. !         default: shared += memmap[i] - 1;
  42. !         case 1: ++used;
  43. !     }
  44.   
  45. !     printf("memory: %10d %10d %10d %10d\n",
  46. !     freepg + used << pg_shift,
  47. !     used << pg_shift,
  48.       freepg << pg_shift,
  49.       shared << pg_shift);
  50.   }
  51.   
  52.   show_swap()
  53. --- 120,156 ----
  54.   show_memory()
  55.   {
  56.       unsigned char *memmap;
  57. !     unsigned used=0, freepg=0, shared=0, total = 0 ;
  58. !     int i, pages ;
  59. !     unsigned long mem_map_adr ;
  60. !     int nr_free_pages ;
  61.   
  62. +     mem_map_adr = get_kword(k_addr("_mem_map")) ;
  63.       pages = (get_kword(k_addr("_high_memory")) - 
  64.            get_kword(k_addr("_low_memory"))) >> 12;
  65.       memmap = (unsigned char *) xmalloc(pages);
  66. !     nr_free_pages = get_kword(k_addr("_nr_free_pages")) ;
  67.   
  68. !     kmemread(memmap, mem_map_adr, pages);
  69. !     for (i = 0; i < pages; ++i) {
  70. !       total++ ;
  71. !       if (!memmap[i]) 
  72. !     freepg++ ;
  73. !       else
  74. !     shared += memmap[i] - 1;
  75. !     }
  76. !     
  77. !     printf("memory: %10d %10d %10d %10d",
  78. !         total << pg_shift,
  79. !     (total - (freepg + shared)) << pg_shift ,
  80.       freepg << pg_shift,
  81.       shared << pg_shift);
  82. +     /* print nr_free_pages only if different */
  83. +     if (nr_free_pages != freepg ) {
  84. +       printf("   nr_free_pages = %d", nr_free_pages) ;
  85. +     }
  86. +     printf("\n") ;
  87.   }
  88.   
  89.   show_swap()
  90. ==================== end of cdiff ============================
  91.