]> Zhao Yanbai Git Server - minix.git/commitdiff
New dumps for RS and DS server.
authorJorrit Herder <jnherder@minix3.org>
Thu, 20 Oct 2005 20:28:54 +0000 (20:28 +0000)
committerJorrit Herder <jnherder@minix3.org>
Thu, 20 Oct 2005 20:28:54 +0000 (20:28 +0000)
servers/is/Makefile
servers/is/dmp.c
servers/is/dmp_ds.c [new file with mode: 0644]
servers/is/dmp_fs.c
servers/is/dmp_kernel.c
servers/is/dmp_pm.c
servers/is/dmp_rs.c
servers/is/main.c [moved from servers/is/is.c with 97% similarity]
servers/is/proto.h

index dc519f0f0eb20f7224deac81a34b942325640ecf..56f81bfb909c54ff3f8a5066b80fde50192d6a4d 100644 (file)
@@ -17,7 +17,7 @@ CFLAGS = -I$i
 LDFLAGS = -i
 LIBS = -lsys -lsysutil 
 
-OBJ = is.o dmp.o dmp_kernel.o dmp_pm.o dmp_fs.o dmp_rs.o 
+OBJ = main.o dmp.o dmp_kernel.o dmp_pm.o dmp_fs.o dmp_rs.o dmp_ds.o 
 
 # build local binary
 all build:     $(SERVER)
index 5fe7cdd7ca43a0c5586d83bed5ab178af7accf2d..bd2a256d91f8c44221c7e9764a114624365b2610 100644 (file)
@@ -7,9 +7,12 @@
  *   handle_fkey:      handle a function key pressed notification
  */
 
-#include "is.h"
+#include "inc.h"
 
-#define NHOOKS 18
+/* Define hooks for the debugging dumps. This table maps function keys
+ * onto a specific dump and provides a description for it.
+ */
+#define NHOOKS 19
 
 struct hook_entry {
        int key;
@@ -34,15 +37,16 @@ struct hook_entry {
        { SF5,  mapping_dmp, "Print key mappings" },
        { SF6,  rproc_dmp, "Reincarnation server process table" },
        { SF7,  holes_dmp, "Memory free list" },
+       { SF8,  data_store_dmp, "Data store contents" },
 };
 
 /*===========================================================================*
  *                             handle_fkey                                  *
  *===========================================================================*/
-#define pressed(k) ((F1<=(k) && (k)<=F12 && bit_isset(m->FKEY_FKEYS, ((k)-F1+1))) \
+#define pressed(k) ((F1<=(k)&&(k)<=F12 && bit_isset(m->FKEY_FKEYS,((k)-F1+1)))\
        || (SF1<=(k) && (k)<=SF12 && bit_isset(m->FKEY_SFKEYS, ((k)-SF1+1)))) 
-
-PUBLIC int do_fkey_pressed(message *m)
+PUBLIC int do_fkey_pressed(m)
+message *m;                                    /* notification message */
 {
   int s, h;
 
@@ -55,15 +59,18 @@ PUBLIC int do_fkey_pressed(message *m)
       report("IS", "warning, sendrec to TTY failed", s);
 
   /* Now check which keys were pressed: F1-F12, SF1-SF12. */
-  for(h = 0; h < NHOOKS; h++)
-       if(pressed(hooks[h].key))
-               hooks[h].function();
+  for(h=0; h < NHOOKS; h++)
+      if(pressed(hooks[h].key))
+          hooks[h].function();
 
-  /* Inhibit sending a reply message. */
+  /* Don't send a reply message. */
   return(EDONTREPLY);
 }
 
-PRIVATE char *keyname(int key)
+/*===========================================================================*
+ *                             key_name                                     *
+ *===========================================================================*/
+PRIVATE char *key_name(int key)
 {
        static char name[15];
 
@@ -73,30 +80,32 @@ PRIVATE char *keyname(int key)
                sprintf(name, "Shift+F%d", key - SF1 + 1);
        else
                sprintf(name, "?");
-
        return name;
 }
 
-
+/*===========================================================================*
+ *                             reboot_dmp                                   *
+ *===========================================================================*/
 PUBLIC void reboot_dmp(void)
 {
   if (sys_panic) sys_abort(RBT_HALT);
 }
 
 
+/*===========================================================================*
+ *                             mapping_dmp                                  *
+ *===========================================================================*/
 PUBLIC void mapping_dmp(void)
 {
-       int h;
-
-       printf(
-"Function key mappings for debug dumps in IS server.\n"
-"        Key   Description\n"
-"-------------------------------------------------------------------------\n");
-       for(h = 0; h < NHOOKS; h++)
-               printf(" %10s.  %s\n", keyname(hooks[h].key), hooks[h].name);
+  int h;
 
-       printf("\n");
+  printf("Function key mappings for debug dumps in IS server.\n");
+  printf("        Key   Description\n");
+  printf("-------------------------------------");
+  printf("------------------------------------\n");
 
-       return;
+  for(h=0; h < NHOOKS; h++)
+      printf(" %10s.  %s\n", key_name(hooks[h].key), hooks[h].name);
+  printf("\n");
 }
 
diff --git a/servers/is/dmp_ds.c b/servers/is/dmp_ds.c
new file mode 100644 (file)
index 0000000..4de8385
--- /dev/null
@@ -0,0 +1,60 @@
+/* This file contains procedures to dump DS data structures.
+ *
+ * The entry points into this file are
+ *   data_store_dmp:           display DS data store contents 
+ *
+ * Created:
+ *   Oct 18, 2005:     by Jorrit N. Herder
+ */
+
+#include "inc.h"
+#include "../ds/store.h"
+
+PUBLIC struct data_store store[NR_DS_KEYS];
+
+FORWARD _PROTOTYPE( char *s_flags_str, (int flags)             );
+
+/*===========================================================================*
+ *                             data_store_dmp                               *
+ *===========================================================================*/
+PUBLIC void data_store_dmp()
+{
+  struct data_store *dsp;
+  int i,j, n=0;
+  static int prev_i=0;
+
+
+  printf("Data Store (DS) contents dump\n");
+
+  getsysinfo(DS_PROC_NR, SI_DATA_STORE, store);
+
+  printf("-slot- -key- -flags- -val_l1- -val_l2-\n");
+
+  for (i=prev_i; i<NR_DS_KEYS; i++) {
+       dsp = &store[i];
+       if (! dsp->ds_flags & DS_IN_USE) continue;
+       if (++n > 22) break;
+       printf("%3d %8d %s  [%8d] [%8d] \n",
+               i, dsp->ds_key,
+               s_flags_str(dsp->ds_flags),
+               dsp->ds_val_l1,
+               dsp->ds_val_l2
+       );
+  }
+  if (i >= NR_DS_KEYS) i = 0;
+  else printf("--more--\r");
+  prev_i = i;
+}
+
+
+PRIVATE char *s_flags_str(int flags)
+{
+       static char str[5];
+       str[0] = (flags & DS_IN_USE) ? 'U' : '-';
+       str[1] = (flags & DS_PUBLIC) ? 'P' : '-';
+       str[2] = '-';
+       str[3] = '\0';
+
+       return(str);
+}
+
index 01946537d25c6287ad03298ace3cf31c994812e9..d4452ac2eac8aee6eee50332903810e96d3c44b5 100644 (file)
@@ -8,7 +8,7 @@
  *   Oct 01, 2004:     by Jorrit N. Herder
  */
 
-#include "is.h"
+#include "inc.h"
 #include "../fs/const.h"
 #include "../fs/fproc.h"
 #include <minix/dmap.h>
index 861034a421461f89df8362c7ce6887db7ac29313..6b564d686ebf1f5ede4681301e1f345d0b144637 100644 (file)
@@ -1,6 +1,6 @@
 /* Debugging dump procedures for the kernel. */
 
-#include "is.h"
+#include "inc.h"
 #include <timers.h>
 #include <ibm/interrupt.h>
 #include "../../kernel/const.h"
@@ -289,7 +289,8 @@ PUBLIC void kenv_dmp()
     printf("- kmem_size:  %5u\n", kinfo.kmem_size); 
     printf("- bootdev_base:  %5u\n", kinfo.bootdev_base); 
     printf("- bootdev_size:  %5u\n", kinfo.bootdev_size); 
-    printf("- bootdev_mem:  %5u\n", kinfo.bootdev_mem); 
+    printf("- ramdev_base:   %5u\n", kinfo.ramdev_base); 
+    printf("- ramdev_size:   %5u\n", kinfo.ramdev_size); 
     printf("- params_base:   %5u\n", kinfo.params_base); 
     printf("- params_size:   %5u\n", kinfo.params_size); 
     printf("- nr_procs:     %3u\n", kinfo.nr_procs); 
index 9fd3b7f2f2393fa39e447cba3cfb2184013369b1..c6441c788b05fd1f5bb682dcd36b8ad2bde71eba 100644 (file)
@@ -7,7 +7,7 @@
  *   May 11, 2005:     by Jorrit N. Herder
  */
 
-#include "is.h"
+#include "inc.h"
 #include "../pm/mproc.h"
 #include <timers.h> 
 #include <minix/config.h> 
index c9726440bb0172f569d9045f1df4a9d84e4dfa12..4fd82ef0848b6454f71e5a90fbd6afd9f9df0c9e 100644 (file)
@@ -7,8 +7,8 @@
  *   Oct 03, 2005:     by Jorrit N. Herder
  */
 
-#include "is.h"
-#include "../rs/rproc.h"
+#include "inc.h"
+#include "../rs/manager.h"
 
 PUBLIC struct rproc rproc[NR_SYS_PROCS];
 
@@ -26,18 +26,18 @@ PUBLIC void rproc_dmp()
   getsysinfo(RS_PROC_NR, SI_PROC_TAB, rproc);
 
   printf("Reincarnation Server (RS) system process table dump\n");
-  printf("-proc nr-pid- -dev nr/ style- -ticks-checked-alive-- --flags-- -command (argc)-\n");
+  printf("-proc-pid-flag--dev- -T--checked--alive- -starts-backoff- -command (argc)-\n");
   for (i=prev_i; i<NR_SYS_PROCS; i++) {
        rp = &rproc[i];
-       if (! rp->r_flags & IN_USE) continue;
+       if (! rp->r_flags & RS_IN_USE) continue;
        if (++n > 22) break;
-       printf("%3d %5d  %3d/%2d  %3u %8u %8u %s  %s (%d)",
+       printf("%3d %5d %s %3d/%2d %3u %8u %8u  %3dx %3d %s (%d)",
                rp->r_proc_nr, rp->r_pid, 
+               s_flags_str(rp->r_flags),
                rp->r_dev_nr, rp->r_dev_style,
                rp->r_period, 
-               rp->r_check_tm,
-               rp->r_alive_tm,
-               s_flags_str(rp->r_flags),
+               rp->r_check_tm, rp->r_alive_tm,
+               rp->r_restarts, rp->r_backoff,
                rp->r_cmd,
                rp->r_argc
        );
@@ -52,8 +52,8 @@ PUBLIC void rproc_dmp()
 PRIVATE char *s_flags_str(int flags)
 {
        static char str[5];
-       str[0] = (flags & IN_USE) ? 'U' : '-';
-       str[1] = (flags & EXIT_PENDING)    ? 'E' : '-';
+       str[0] = (flags & RS_IN_USE)     ? 'U' : '-';
+       str[1] = (flags & RS_EXITING)    ? 'E' : '-';
        str[2] = '-';
        str[3] = '\0';
 
similarity index 97%
rename from servers/is/is.c
rename to servers/is/main.c
index e65d54c00da5a13aad372ce8206806945264d6fc..81335553258438af618606c63fd088042179627a 100644 (file)
@@ -7,7 +7,7 @@
  *   Apr 29, 2004      by Jorrit N. Herder
  */
 
-#include "is.h"
+#include "inc.h"
 
 /* Set debugging level to 0, 1, or 2 to see no, some, all debug output. */
 #define DEBUG_LEVEL    1
@@ -64,6 +64,9 @@ PUBLIC int main(int argc, char **argv)
       case FKEY_PRESSED:
           result = do_fkey_pressed(&m_in);
           break;
+      case DEV_PING:
+         notify(m_in.m_source);
+         continue;
       default: 
           report("IS","warning, got illegal request from:", m_in.m_source);
           result = EINVAL;
@@ -97,7 +100,7 @@ PRIVATE void init_server(int argc, char **argv)
   /* Set key mappings. IS takes all of F1-F12 and Shift+F1-F6. */
   fkeys = sfkeys = 0;
   for (i=1; i<=12; i++) bit_set(fkeys, i);
-  for (i=1; i<= 7; i++) bit_set(sfkeys, i);
+  for (i=1; i<= 8; i++) bit_set(sfkeys, i);
   if ((s=fkey_map(&fkeys, &sfkeys)) != OK)
       report("IS", "warning, fkey_map failed:", s);
 }
index a464a4b68b9bd7a171fa8b0554c779e65e411060..42767821f27a53566dcff9b57dd9a5e6a8a7accb 100644 (file)
@@ -32,3 +32,6 @@ _PROTOTYPE( void fproc_dmp, (void)                                    );
 
 /* dmp_rs.c */
 _PROTOTYPE( void rproc_dmp, (void)                                     );
+
+/* dmp_ds.c */
+_PROTOTYPE( void data_store_dmp, (void)                                        );