[BACK]Return to kdump.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / kdump

Diff for /src/usr.bin/kdump/kdump.c between version 1.16 and 1.17

version 1.16, 2002/06/12 06:07:15 version 1.17, 2002/06/23 20:01:25
Line 70 
Line 70 
 int timestamp, decimal, fancy = 1, tail, maxdata;  int timestamp, decimal, fancy = 1, tail, maxdata;
 char *tracefile = DEF_TRACEFILE;  char *tracefile = DEF_TRACEFILE;
 struct ktr_header ktr_header;  struct ktr_header ktr_header;
   pid_t pid = -1;
   
 #define eqs(s1, s2)     (strcmp((s1), (s2)) == 0)  #define eqs(s1, s2)     (strcmp((s1), (s2)) == 0)
   
Line 158 
Line 159 
 static void usage(void);  static void usage(void);
   
 int  int
 main(argc, argv)  main(int argc, char *argv[])
         int argc;  
         char *argv[];  
 {  {
         int ch, ktrlen, size;          int ch, ktrlen, size, silent;
         void *m;  
         int trpoints = ALL_POINTS;          int trpoints = ALL_POINTS;
           void *m;
   
         current = &emulations[0];       /* native */          current = &emulations[0];       /* native */
   
         while ((ch = getopt(argc, argv, "e:f:dlm:nRTt:")) != -1)          while ((ch = getopt(argc, argv, "e:f:dlm:nRp:Tt:")) != -1)
                 switch (ch) {                  switch (ch) {
                 case 'e':                  case 'e':
                         setemul(optarg);                          setemul(optarg);
Line 188 
Line 187 
                 case 'n':                  case 'n':
                         fancy = 0;                          fancy = 0;
                         break;                          break;
                   case 'p':
                           pid = atoi(optarg);
                           break;
                 case 'R':                  case 'R':
                         timestamp = 2;  /* relative timestamp */                          timestamp = 2;  /* relative timestamp */
                         break;                          break;
Line 211 
Line 213 
         if (!freopen(tracefile, "r", stdin))          if (!freopen(tracefile, "r", stdin))
                 err(1, "%s", tracefile);                  err(1, "%s", tracefile);
         while (fread_tail(&ktr_header, sizeof(struct ktr_header), 1)) {          while (fread_tail(&ktr_header, sizeof(struct ktr_header), 1)) {
                 if (trpoints & (1<<ktr_header.ktr_type))                  silent = 0;
                   if (pid != -1 && pid != ktr_header.ktr_pid)
                           silent = 1;
                   if (silent == 0 && trpoints & (1<<ktr_header.ktr_type))
                         dumpheader(&ktr_header);                          dumpheader(&ktr_header);
                 if ((ktrlen = ktr_header.ktr_len) < 0)                  if ((ktrlen = ktr_header.ktr_len) < 0)
                         errx(1, "bogus length 0x%x", ktrlen);                          errx(1, "bogus length 0x%x", ktrlen);
Line 223 
Line 228 
                 }                  }
                 if (ktrlen && fread_tail(m, ktrlen, 1) == 0)                  if (ktrlen && fread_tail(m, ktrlen, 1) == 0)
                         errx(1, "data too short");                          errx(1, "data too short");
                   if (silent)
                           continue;
                 if ((trpoints & (1<<ktr_header.ktr_type)) == 0)                  if ((trpoints & (1<<ktr_header.ktr_type)) == 0)
                         continue;                          continue;
                 switch (ktr_header.ktr_type) {                  switch (ktr_header.ktr_type) {
Line 255 
Line 262 
 }  }
   
 static int  static int
 fread_tail(buf, size, num)  fread_tail(void *buf, int size, int num)
         void *buf;  
         int num, size;  
 {  {
         int i;          int i;
   
Line 269 
Line 274 
 }  }
   
 static void  static void
 dumpheader(kth)  dumpheader(struct ktr_header *kth)
         struct ktr_header *kth;  
 {  {
         char unknown[64], *type;  
         static struct timeval prevtime;          static struct timeval prevtime;
           char unknown[64], *type;
         struct timeval temp;          struct timeval temp;
   
         switch (kth->ktr_type) {          switch (kth->ktr_type) {
Line 299 
Line 303 
                 type = "EMUL";                  type = "EMUL";
                 break;                  break;
         default:          default:
                 (void)sprintf(unknown, "UNKNOWN(%d)", kth->ktr_type);                  (void)snprintf(unknown, sizeof unknown, "UNKNOWN(%d)",
                       kth->ktr_type);
                 type = unknown;                  type = unknown;
         }          }
   
Line 317 
Line 322 
 }  }
   
 static void  static void
 ioctldecode(cmd)  ioctldecode(u_long cmd)
         u_long cmd;  
 {  {
         char dirbuf[4], *dir = dirbuf;          char dirbuf[4], *dir = dirbuf;
   
Line 337 
Line 341 
 }  }
   
 static void  static void
 ktrsyscall(ktr)  ktrsyscall(struct ktr_syscall *ktr)
         struct ktr_syscall *ktr;  
 {  {
         int argsize = ktr->ktr_argsize;          int argsize = ktr->ktr_argsize;
         register_t *ap;          register_t *ap;
Line 353 
Line 356 
                 if (fancy) {                  if (fancy) {
                         if (ktr->ktr_code == SYS_ioctl) {                          if (ktr->ktr_code == SYS_ioctl) {
                                 const char *cp;                                  const char *cp;
   
                                 if (decimal)                                  if (decimal)
                                         (void)printf("(%ld", (long)*ap);                                          (void)printf("(%ld", (long)*ap);
                                 else                                  else
Line 392 
Line 396 
 }  }
   
 static void  static void
 ktrsysret(ktr)  ktrsysret(struct ktr_sysret *ktr)
         struct ktr_sysret *ktr;  
 {  {
         int ret = ktr->ktr_retval;          int ret = ktr->ktr_retval;
         int error = ktr->ktr_error;          int error = ktr->ktr_error;
Line 428 
Line 431 
 }  }
   
 static void  static void
 ktrnamei(cp, len)  ktrnamei(const char *cp, int len)
         const char *cp;  
         int len;  
 {  {
         (void)printf("\"%.*s\"\n", len, cp);          (void)printf("\"%.*s\"\n", len, cp);
 }  }
   
 static void  static void
 ktremul(cp, len)  ktremul(char *cp, int len)
         char *cp;  
         int len;  
 {  {
         char name[1024];          char name[1024];
   
Line 453 
Line 452 
 }  }
   
 static void  static void
 ktrgenio(ktr, len)  ktrgenio(struct ktr_genio *ktr, int len)
         struct ktr_genio *ktr;  
         int len;  
 {  {
         int datalen = len - sizeof (struct ktr_genio);  
         char *dp = (char *)ktr + sizeof (struct ktr_genio);          char *dp = (char *)ktr + sizeof (struct ktr_genio);
         char *cp;          int datalen = len - sizeof (struct ktr_genio);
         int col = 0;  
         int width;  
         char visbuf[5];  
         static int screenwidth = 0;          static int screenwidth = 0;
           int col = 0, width;
           char visbuf[5], *cp;
   
         if (screenwidth == 0) {          if (screenwidth == 0) {
                 struct winsize ws;                  struct winsize ws;
Line 483 
Line 478 
         for (; datalen > 0; datalen--, dp++) {          for (; datalen > 0; datalen--, dp++) {
                 (void) vis(visbuf, *dp, VIS_CSTYLE, *(dp+1));                  (void) vis(visbuf, *dp, VIS_CSTYLE, *(dp+1));
                 cp = visbuf;                  cp = visbuf;
   
                 /*                  /*
                  * Keep track of printables and                   * Keep track of printables and
                  * space chars (like fold(1)).                   * space chars (like fold(1)).
Line 491 
Line 487 
                         (void)putchar('\t');                          (void)putchar('\t');
                         col = 8;                          col = 8;
                 }                  }
                 switch(*cp) {                  switch (*cp) {
                 case '\n':                  case '\n':
                         col = 0;                          col = 0;
                         (void)putchar('\n');                          (void)putchar('\n');
Line 517 
Line 513 
 }  }
   
 static void  static void
 ktrpsig(psig)  ktrpsig(struct ktr_psig *psig)
         struct ktr_psig *psig;  
 {  {
         (void)printf("SIG%s ", sys_signame[psig->signo]);          (void)printf("SIG%s ", sys_signame[psig->signo]);
         if (psig->action == SIG_DFL)          if (psig->action == SIG_DFL)
Line 541 
Line 536 
 }  }
   
 static void  static void
 ktrcsw(cs)  ktrcsw(struct ktr_csw *cs)
         struct ktr_csw *cs;  
 {  {
         (void)printf("%s %s\n", cs->out ? "stop" : "resume",          (void)printf("%s %s\n", cs->out ? "stop" : "resume",
             cs->user ? "user" : "kernel");              cs->user ? "user" : "kernel");
 }  }
   
 static void  static void
 usage()  usage(void)
 {  {
   
         (void)fprintf(stderr,          (void)fprintf(stderr,
 "usage: kdump [-dnlRT] [-e emulation] [-f trfile] [-m maxdata] [-t [cnis]]\n");  "usage: kdump [-dnlRT] [-e emulation] [-p pid] [-f trfile] [-m maxdata] [-t [cnis]]\n");
         exit(1);          exit(1);
 }  }
   
 static void  static void
 setemul(name)  setemul(const char *name)
         const char *name;  
 {  {
         int i;          int i;
   
         for (i = 0; emulations[i].name != NULL; i++)          for (i = 0; emulations[i].name != NULL; i++)
                 if (strcmp(emulations[i].name, name) == 0) {                  if (strcmp(emulations[i].name, name) == 0) {
                         current = &emulations[i];                          current = &emulations[i];

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.17