home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume3 / xaw.load.patch / patch1 / xperforig.diff < prev   
Encoding:
Text File  |  1989-05-04  |  4.9 KB  |  206 lines

  1. *** /tmp/,RCSt1a05308    Wed Apr 26 08:35:39 1989
  2. --- system.c    Wed Apr 26 08:35:22 1989
  3. ***************
  4. *** 16,21 ****
  5. --- 16,25 ----
  6.   #include <sys/socket.h>
  7.   #include <sys/vm.h>
  8.   #include <sys/dk.h>
  9. + #ifdef SUN4_0
  10. + #include <kvm.h>
  11. + #include <fcntl.h>
  12. + #endif
  13.   #include <nlist.h>
  14.   #include <sys/buf.h>
  15.   #ifdef vax
  16. ***************
  17. *** 59,66 ****
  18. --- 63,109 ----
  19.   int debug = 0;
  20.   #define max(a,b) (a>b ? a:b)
  21.   
  22. + #ifdef sun386
  23.   struct nlist nl[] = {
  24.   #define X_CPTIME    0
  25. +     { "cp_time" },
  26. + #define X_RATE      1
  27. +     { "rate" },
  28. + #define X_TOTAL     2
  29. +     { "total" },
  30. + #define X_DEFICIT       3
  31. +     { "deficit" },
  32. + #define X_FORKSTAT      4
  33. +     { "forkstat" },
  34. + #define X_SUM       5
  35. +     { "sum" },
  36. + #define X_FIRSTFREE     6
  37. +     { "firstfree" },
  38. + #define X_MAXFREE       7
  39. +     { "maxfree" },
  40. + #define X_BOOTTIME      8
  41. +     { "boottime" },
  42. + #define X_DKXFER    9
  43. +     { "dk_xfer" },
  44. + #define X_REC       10
  45. +     { "rectime" },
  46. + #define X_PGIN      11
  47. +     { "pgintime" },
  48. + #define X_HZ        12
  49. +     { "hz" },
  50. + #define X_MBDINIT       13
  51. +     { "mbdinit" },
  52. + #define N_IFNET       14
  53. +     { "ifnet" },
  54. + #define X_UBDINIT    15
  55. +     { "ubdinit" },
  56. + #define X_IOCINIT    16
  57. +     { "ioccdinit" },
  58. +     { "" },
  59. + };
  60. + #else
  61. + struct nlist nl[] = {
  62. + #define X_CPTIME    0
  63.       { "_cp_time" },
  64.   #define X_RATE      1
  65.       { "_rate" },
  66. ***************
  67. *** 96,101 ****
  68. --- 139,145 ----
  69.       { "_ioccdinit" },
  70.       { "" },
  71.   };
  72. + #endif
  73.   
  74.   char dr_name[DK_NDRIVE][10];
  75.   char dr_unit[DK_NDRIVE];
  76. ***************
  77. *** 129,135 ****
  78. --- 173,184 ----
  79.   int nintv;
  80.   long t;
  81.   
  82. + #ifdef SUN4_0
  83. + kvm_t *kd;
  84. + #define steal(where, var) kvm_read(kd, where, &var, sizeof var);
  85. + #else
  86.   #define steal(where, var) lseek(mf, where, 0); read(mf, &var, sizeof var);
  87. + #endif
  88.   #define pgtok(a) ((a)*NBPG/1024)
  89.   
  90.   void set_sys_defaults()
  91. ***************
  92. *** 223,229 ****
  93. --- 272,283 ----
  94.     init_stat(USER_CPU_PERCENTAGE, 0, 100, "User", " CPU");
  95.     init_stat(SYSTEM_CPU_PERCENTAGE, 0, 100, "System", " CPU");
  96.     init_stat(IDLE_CPU_PERCENTAGE, 0, 100, "Idle", " CPU");
  97. + #ifdef SUN4_0
  98. +   /* Kludge - maxfree isn't kept on Sun 4.0 (sigh) */
  99. +   init_stat(FREE_MEM, 0, max(pgtok(maxfree), (2 * pgtok(total.t_free))), "Free", " memory");
  100. + #else
  101.     init_stat(FREE_MEM, 0, pgtok(maxfree), "Free", " memory");
  102. + #endif
  103.     init_stat(DISK_TRANSFERS, 0, 40, "Disk", " transfers");
  104.     init_stat(INTERRUPTS, 0, 60, "Interrupts", "");
  105.     init_stat(INPUT_PACKETS, 0, (have_disk ? 20 : 40), "Input", " packets");
  106. ***************
  107. *** 317,326 ****
  108. --- 371,385 ----
  109.   
  110.       register int i;
  111.   
  112. + #ifdef SUN4_0
  113. +     kvm_read(kd, (long)nl[X_CPTIME].n_value, s.time, sizeof s.time);
  114. +     kvm_read(kd, (long)nl[X_DKXFER].n_value, s.xfer, sizeof s.xfer);
  115. + #else
  116.       lseek(mf, (long)nl[X_CPTIME].n_value, 0);
  117.       read(mf, s.time, sizeof s.time);
  118.       lseek(mf, (long)nl[X_DKXFER].n_value, 0);
  119.       read(mf, s.xfer, sizeof s.xfer);
  120. + #endif
  121.       if (nintv != 1) {
  122.           steal((long)nl[X_SUM].n_value, rate);
  123.       } 
  124. ***************
  125. *** 378,383 ****
  126. --- 437,454 ----
  127.       register int i;
  128.       int nintv;
  129.   
  130. + #ifdef SUN4_0
  131. +     if ((kd = kvm_open(kernel_name, NULL, NULL, O_RDONLY, "xperfmon")) == NULL)
  132. +         exit(1);
  133. + #ifdef sun386
  134. +     if ((kvm_nlist(kd, nl) < 0) || ((nl[0].n_type == 0) && (nl[0].n_value == 0))) {
  135. + #else
  136. +     if ((kvm_nlist(kd, nl) < 0) || (nl[0].n_type == 0)) {
  137. + #endif
  138. +         fprintf(stderr, "no %s namelist\n", kernel_name);
  139. +         exit(1);
  140. +     }
  141. + #else
  142.       nlist(kernel_name, nl);
  143.       if(nl[0].n_type == 0) {
  144.           fprintf(stderr, "no %s namelist\n", kernel_name);
  145. ***************
  146. *** 388,393 ****
  147. --- 459,465 ----
  148.           fprintf(stderr, "cannot open %s\n", memory_name);
  149.           exit(1);
  150.       }
  151. + #endif
  152.       steal((long)nl[X_MAXFREE].n_value, maxfree);
  153.       steal((long)nl[X_BOOTTIME].n_value, boottime);
  154.       steal((long)nl[X_HZ].n_value, hz);
  155. ***************
  156. *** 434,440 ****
  157.       mp = (struct mba_device *) nl[X_MBDINIT].n_value;
  158.       up = (struct uba_device *) nl[X_UBDINIT].n_value;
  159.       if (up == 0) {
  160. !         fprintf(stderr, "perfmon: Disk init info not in namelist\n");
  161.           exit(1);
  162.       }
  163.       if(mp) for (;;) {
  164. --- 506,512 ----
  165.       mp = (struct mba_device *) nl[X_MBDINIT].n_value;
  166.       up = (struct uba_device *) nl[X_UBDINIT].n_value;
  167.       if (up == 0) {
  168. !         fprintf(stderr, "xperfmon: Disk init info not in namelist\n");
  169.           exit(1);
  170.       }
  171.       if(mp) for (;;) {
  172. ***************
  173. *** 473,479 ****
  174.   
  175.       mp = (struct mb_device *) nl[X_MBDINIT].n_value;
  176.       if (mp == 0) {
  177. !         fprintf(stderr, "vmstat: Disk init info not in namelist\n");
  178.           exit(1);
  179.       }
  180.       for (;;) {
  181. --- 545,551 ----
  182.   
  183.       mp = (struct mb_device *) nl[X_MBDINIT].n_value;
  184.       if (mp == 0) {
  185. !         fprintf(stderr, "xperfmon: Disk init info not in namelist\n");
  186.           exit(1);
  187.       }
  188.       for (;;) {
  189. ***************
  190. *** 501,507 ****
  191.   
  192.       mp = (struct iocc_device *) nl[X_IOCINIT].n_value;
  193.       if (mp == 0) {
  194. !         fprintf(stderr, "vmstat: Disk init info not in namelist\n");
  195.           exit(1);
  196.       }
  197.       for (;;) {
  198. --- 573,579 ----
  199.   
  200.       mp = (struct iocc_device *) nl[X_IOCINIT].n_value;
  201.       if (mp == 0) {
  202. !         fprintf(stderr, "xperfmon: Disk init info not in namelist\n");
  203.           exit(1);
  204.       }
  205.       for (;;) {
  206.