home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / comp / os / linux / 21577 / fstat.diff.Z / fstat.diff
Encoding:
Text File  |  1992-12-23  |  4.2 KB  |  184 lines

  1. *** ../ps-0.98/fstat.c    Tue Oct 20 14:33:17 1992
  2. --- fstat.c    Thu Dec 24 02:37:38 1992
  3. ***************
  4. *** 21,26 ****
  5. --- 21,29 ----
  6.   struct inode *ino_table;
  7.   struct file *fil_table;
  8.   
  9. + int _read_pipe_fops;
  10. + int _write_pipe_fops;
  11.   caddr_t kbase;
  12.   
  13.   #define    KWORD(a)    (*((unsigned long *)(kbase + (a))))
  14. ***************
  15. *** 119,125 ****
  16.       }
  17.   
  18.       mmap_mem();
  19. !     ino_table = KPTR(k_addr("_inode_table"));
  20.       fil_table = KPTR(k_addr("_file_table"));
  21.       p = KPTR(k_addr("_task"));
  22.       for (n = NR_TASKS; n > 0; --n, ++p) {
  23. --- 122,128 ----
  24.       }
  25.   
  26.       mmap_mem();
  27. !     ino_table = KPTR(KWORD(k_addr("_inode_table")));
  28.       fil_table = KPTR(k_addr("_file_table"));
  29.       p = KPTR(k_addr("_task"));
  30.       for (n = NR_TASKS; n > 0; --n, ++p) {
  31. ***************
  32. *** 190,196 ****
  33.       int i;
  34.       static int pid = -1;
  35.   
  36. !     if (!inop)
  37.       return;
  38.   
  39.       inop = KPTR(ino);
  40. --- 193,199 ----
  41.       int i;
  42.       static int pid = -1;
  43.   
  44. !     if (!ino)
  45.       return;
  46.   
  47.       inop = KPTR(ino);
  48. ***************
  49. *** 228,234 ****
  50.       printf("%5d", type);
  51.       
  52.       if (inop->i_mode == 0 && inop->i_pipe) {
  53. !     printf("* (pipe %#x)\n", PIPE_BASE(*inop));
  54.       return;
  55.       }
  56.       if (S_ISSOCK(inop->i_mode)) {
  57. --- 231,248 ----
  58.       printf("%5d", type);
  59.       
  60.       if (inop->i_mode == 0 && inop->i_pipe) {
  61. !     char *rw = "?";
  62. !     if (!_read_pipe_fops) {
  63. !         _read_pipe_fops = k_addr("_read_pipe_fops");
  64. !         _write_pipe_fops = k_addr("_write_pipe_fops");
  65. !     }
  66. !     if ((long)((struct file *)KPTR(task->filp[i]))->f_op == _read_pipe_fops)
  67. !         rw = "<-";
  68. !     else if ((long)((struct file *)KPTR(task->filp[i]))->f_op == _write_pipe_fops)
  69. !         rw = "->";
  70. !     printf("* (pipe %s %#x %d %dr %dw)\n", rw, PIPE_BASE(*inop),
  71. !         PIPE_SIZE(*inop),
  72. !         PIPE_READERS(*inop), PIPE_WRITERS(*inop));
  73.       return;
  74.       }
  75.       if (S_ISSOCK(inop->i_mode)) {
  76. ***************
  77. *** 337,342 ****
  78. --- 351,359 ----
  79.   
  80.   #include <linux/socket.h>
  81.   #include "/usr/src/linux/net/kern_sock.h"
  82. + #include "/usr/src/linux/net/tcp/timer.h"
  83. + #include "/usr/src/linux/net/tcp/tcp.h"
  84. + #include "/usr/src/linux/net/tcp/sock.h"
  85.   
  86.   #define    SOCK_INODE(x)    ((x)->dummy)
  87.   
  88. ***************
  89. *** 345,350 ****
  90. --- 362,373 ----
  91.   int _unix_proto_ops;
  92.   int _inet_proto_ops;
  93.   
  94. + char *af_name[] = {
  95. +     "????",
  96. +     "unix",
  97. +     "inet",
  98. + };
  99.   struct socket *sockets;
  100.   
  101.   print_sock(ino)
  102. ***************
  103. *** 351,356 ****
  104. --- 374,380 ----
  105.   struct inode *ino;
  106.   {
  107.       struct socket *sock;
  108. +     int af = 0;
  109.   
  110.       if (sockets == NULL)
  111.       sock_init();
  112. ***************
  113. *** 359,370 ****
  114.       return;
  115.       }
  116.       if ((long) sock->ops == _unix_proto_ops)
  117. !     printf("* (unix ");
  118.       else if (_inet_proto_ops != -1 && (long) sock->ops == _inet_proto_ops)
  119. !     printf("* (inet ");
  120. !     else
  121. !     printf("* (???? ");
  122.   
  123.       switch (sock->type) {
  124.       case SOCK_STREAM: printf("stream"); break;
  125.       case SOCK_DGRAM: printf("dgram"); break;
  126. --- 383,393 ----
  127.       return;
  128.       }
  129.       if ((long) sock->ops == _unix_proto_ops)
  130. !     af = AF_UNIX;
  131.       else if (_inet_proto_ops != -1 && (long) sock->ops == _inet_proto_ops)
  132. !     af = AF_INET;
  133.   
  134. +     printf("* (%s ", af_name[af]);
  135.       switch (sock->type) {
  136.       case SOCK_STREAM: printf("stream"); break;
  137.       case SOCK_DGRAM: printf("dgram"); break;
  138. ***************
  139. *** 374,380 ****
  140.       case SOCK_PACKET: printf("packet"); break;
  141.       default: printf("???");
  142.       }
  143. !     printf(" %x)\n", sock->flags);
  144.   }
  145.   
  146.   struct socket *
  147. --- 397,413 ----
  148.       case SOCK_PACKET: printf("packet"); break;
  149.       default: printf("???");
  150.       }
  151. !     printf(" %x", sock->flags);
  152. !     if (af == AF_INET) {
  153. !     struct sock sk;
  154. !     if (sock->data) {
  155. !         kmemread(&sk, sock->data, sizeof sk);
  156. !         printf(" %d", sk.num);
  157. !     }
  158. !     }
  159. !     printf(")\n");
  160.   }
  161.   
  162.   struct socket *
  163. ***************
  164. *** 465,471 ****
  165.   #if 0
  166.       end_mem = get_kword(k_addr("_high_memory"));
  167.   #else
  168. !     end_mem = k_addr("_end");
  169.   #endif
  170.       if (kbase == NULL) {
  171.       if ((kbase = (caddr_t) malloc(end_mem)) == NULL || ((long) kbase & 0xfff)) {
  172. --- 498,504 ----
  173.   #if 0
  174.       end_mem = get_kword(k_addr("_high_memory"));
  175.   #else
  176. !     end_mem = get_kword(k_addr("_memory_start"));
  177.   #endif
  178.       if (kbase == NULL) {
  179.       if ((kbase = (caddr_t) malloc(end_mem)) == NULL || ((long) kbase & 0xfff)) {
  180.