LINUX: afs_create infinite fetchStatus loop
[pkg-k5-afs_openafs.git] / src / rxdebug / rxdumptrace.c
blob69f95b22ceb9567f026f0dc5e585023a834066da
1 /*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
8 */
10 #include <afsconfig.h>
11 #include <afs/param.h>
14 #ifdef RXDEBUG
16 #include <roken.h>
18 #include <afs/afsutil.h>
20 #include "rx.h"
21 #include "rx_globals.h"
22 #include "rx_trace.h"
24 extern char *rxi_tracename;
25 extern int rxi_logfd;
27 struct rx_trace {
28 afs_uint32 cid;
29 unsigned short call;
30 unsigned short qlen;
31 afs_uint32 now;
32 afs_uint32 waittime;
33 afs_uint32 servicetime;
34 afs_uint32 event;
37 int
38 main(int argc, char **argv)
40 struct rx_trace ip;
41 int err = 0;
43 setlinebuf(stdout);
44 argv++;
45 argc--;
46 while (argc && **argv == '-') {
47 if (strcmp(*argv, "-trace") == 0) {
48 strcpy(rxi_tracename, *(++argv));
49 argc--;
50 } else {
51 err++;
52 break;
54 argv++, argc--;
56 if (err || argc != 0) {
57 printf("usage: dumptrace [-trace pathname]");
58 exit(1);
61 rxi_logfd = open(rxi_tracename, O_RDONLY);
62 if (rxi_logfd < 0) {
63 perror("");
64 exit(errno);
67 while (read(rxi_logfd, &ip, sizeof(struct rx_trace))) {
68 printf("%9u ", ip.now);
69 switch (ip.event) {
70 case RX_CALL_END:
71 putchar('E');
72 break;
73 case RX_CALL_START:
74 putchar('S');
75 break;
76 case RX_CALL_ARRIVAL:
77 putchar('A');
78 break;
79 case RX_TRACE_DROP:
80 putchar('D');
81 break;
82 default:
83 putchar('U');
84 break;
86 printf(" %3u %7u %7u %x.%x\n", ip.qlen, ip.servicetime,
87 ip.waittime, ip.cid, ip.call);
89 return 0;
92 #endif