source: tools/tracereport/misc_report.c @ 9b06a91

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivegetfragoffhelplibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 9b06a91 was 466aed6, checked in by Perry Lorier <perry@…>, 14 years ago

Flag functions as static if they're not actually used.
Include report.h too to make sure that functions have the right prototypes

  • Property mode set to 100644
File size: 1.9 KB
Line 
1#include <inttypes.h>
2#include <stdio.h>
3#include <stdbool.h>
4#include <time.h>
5#include <string.h>
6#include "libtrace.h"
7#include "tracereport.h"
8#include "report.h"
9
10static double starttime;
11static double endtime;
12static bool has_starttime = false;
13static bool has_endtime = false;
14static uint64_t packets = 0;
15
16void misc_per_packet(struct libtrace_packet_t *packet)
17{
18        double ts = trace_get_seconds(packet);
19        if (!has_starttime || starttime > ts)
20                starttime = ts;
21        if (!has_endtime || endtime < ts)
22                endtime = ts;
23        has_starttime = has_endtime = true;
24        ++packets;
25}
26
27static char *ts_to_date(double ts)
28{
29        time_t sec = (time_t)ts;
30        static char ret[1024];
31        strcpy(ret,ctime(&sec));
32        ret[strlen(ret)-1]='\0'; /* Get rid of the annoying \n */
33        return ret;
34}
35
36static char *duration(double ts)
37{
38        static char ret[1024];
39        char tmp[1024];
40        ret[0]='\0';
41        if (ts == 0) 
42                return "0 seconds";
43        if (ts>=24*60*60) {
44                snprintf(ret,sizeof(ret),"%i days",(int)(ts/(24*60*60)));
45                ts-=(int)(ts/(24*60*60))*24*60*60;
46        }
47        if (ts>=60*60) {
48                snprintf(tmp,sizeof(tmp),"%s%i hours",
49                                ret[0]?", ":"",
50                                (int)ts/(60*60));
51                strcat(ret,tmp);
52                ts-=(int)(ts/(60*60))*60*60;
53        }
54        if (ts>=60) {
55                snprintf(tmp,sizeof(tmp),"%s%i minutes",
56                                ret[0]?", ":"",
57                                (int)ts/60);
58                strcat(ret,tmp);
59                ts-=(int)(ts/60)*60;
60        }
61        if (ts>0) {
62                snprintf(tmp,sizeof(tmp),"%s%.04f seconds",
63                                ret[0]?", ":"",
64                                ts);
65                strcat(ret,tmp);
66        }
67        return ret;
68}
69
70void misc_report(void)
71{
72        FILE *out = fopen("misc.rpt", "w");
73        if (!out) {
74                perror("fopen");
75                return;
76        }
77        fprintf(out, "Start time: %.04f (%s)\n",starttime,ts_to_date(starttime));
78        fprintf(out, "End time: %.04f (%s)\n",endtime,ts_to_date(endtime));
79        fprintf(out, "Duration: %.04f (%s)\n",endtime-starttime,
80                        duration(endtime-starttime));
81        fprintf(out, "Total Packets: %" PRIu64 "\n",packets);
82        fprintf(out, "Average packet rate: %.02f packets/sec\n",
83                        packets/(endtime-starttime));
84}
Note: See TracBrowser for help on using the repository browser.