New dumps for RS and DS server.

This commit is contained in:
Jorrit Herder 2005-10-20 20:28:54 +00:00
parent 381c24ce17
commit 288860f6e6
9 changed files with 115 additions and 39 deletions

View 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)

View 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;
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);
printf("Function key mappings for debug dumps in IS server.\n");
printf(" Key Description\n");
printf("-------------------------------------");
printf("------------------------------------\n");
printf("\n");
return;
for(h=0; h < NHOOKS; h++)
printf(" %10s. %s\n", key_name(hooks[h].key), hooks[h].name);
printf("\n");
}

60
servers/is/dmp_ds.c Normal file
View File

@ -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);
}

View 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>

View 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);

View 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>

View 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';

View 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);
}

View 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) );