Changeset 3cfa94a for lib


Ignore:
Timestamp:
04/09/05 18:29:56 (16 years ago)
Author:
Daniel Lawson <dlawson@…>
Branches:
4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
Children:
001fbb6
Parents:
48a6c51
Message:

bump version to 2.0.16. Not installed anywhere

Fixed the event api to work with tracefiles:

  • wasn't actually copying into internal buffer
  • timekeeping had second resolution, this didn't work very well
  • added a TRACE_EVENT_TERMINATE event, so that we don't loose the

return condition from trace_read_packet

This still needs a bit of work.

Location:
lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lib/Makefile.am

    r5cffb71 r3cfa94a  
    88libtrace_la_CFLAGS = @ADD_INCLS@
    99libtrace_la_LIBADD = @ADD_LIBS@ $(top_builddir)/replace/libreplace.a
    10 libtrace_la_LDFLAGS=-version-info 2:15b:0 @ADD_LDFLAGS@
     10libtrace_la_LDFLAGS=-version-info 2:16:0 @ADD_LDFLAGS@
    1111
    1212dagapi.c:
  • lib/libtrace.h

    rd66fbf0 r3cfa94a  
    436436        TRACE_EVENT_IOWAIT,
    437437        TRACE_EVENT_SLEEP,
    438         TRACE_EVENT_PACKET
     438        TRACE_EVENT_PACKET,
     439        TRACE_EVENT_TERMINATE
    439440} libtrace_event_t;
    440441
     
    444445        int fd;                /**< if IOWAIT, the fd to sleep on */
    445446        double seconds;        /**< if SLEEP, the amount of time to sleep for */
     447        int size;              /**< if PACKET, the value returned from trace_read_packet */
    446448};
    447449
  • lib/trace.c

    rd66fbf0 r3cfa94a  
    169169        double last_ts;
    170170        double start_ts;
     171        struct timeval start_tv;
    171172};
    172173
     
    14761477                                }
    14771478                                if (data>0) {
    1478                                         trace_read_packet(trace,packet);
     1479                                        event.size = trace_read_packet(trace,packet);
     1480                                        if (event.size < 0) {
     1481                                                event.type = TRACE_EVENT_TERMINATE;
     1482                                                return event;
     1483                                        }
    14791484                                        event.type = TRACE_EVENT_PACKET;
    14801485                                        return event;
     
    14941499                                }
    14951500                                if (data>0) {
    1496                                         trace_read_packet(trace,packet);
     1501                                        event.size = trace_read_packet(trace,packet);
     1502                                        if (event.size < 0) {
     1503                                                event.type = TRACE_EVENT_TERMINATE;
     1504                                                return event;
     1505                                        }
    14971506                                        event.type = TRACE_EVENT_PACKET;
    14981507                                        return event;
     
    15051514                        {
    15061515                                double ts;
     1516                                double now;
     1517                                struct timeval stv;
    15071518                                /* "Prime" the pump */
    15081519                                if (!trace->packet.buffer) {
     
    15101521                                        trace->packet.size=
    15111522                                                trace_read_packet(trace,packet);
    1512                                 }
     1523                                        if (trace->packet.size > 0 ) {
     1524                                                memcpy(trace->packet.buffer,packet->buffer,trace->packet.size);
     1525                                        }
     1526                                }
     1527                                event.size = trace->packet.size;
     1528
     1529                                if (event.size == 0) {
     1530                                        event.type = TRACE_EVENT_TERMINATE;
     1531                                        return event;
     1532                                }
     1533
    15131534                                ts=trace_get_seconds(packet);
    15141535                                if (trace->last_ts!=0) {
    15151536                                        event.seconds = ts - trace->last_ts;
    1516                                         if (event.seconds>time(NULL)-trace->start_ts) {
     1537                                        gettimeofday(&stv, NULL);
     1538                                        now = stv.tv_sec + ((double)stv.tv_usec / 1000000.0);
     1539                                       
     1540                                        if (event.seconds > (now - trace->start_ts)) {
    15171541                                                event.type = TRACE_EVENT_SLEEP;
    15181542                                                return event;
     
    15211545                                }
    15221546                                else {
    1523                                         trace->start_ts = time(NULL);
     1547                                        gettimeofday(&stv, NULL);
     1548                                        trace->start_ts = stv.tv_sec + ((double)stv.tv_usec / 1000000.0);
    15241549                                        trace->last_ts = ts;
    15251550                                }
    1526 
     1551                               
    15271552                                packet->size = trace->packet.size;
    15281553                                memcpy(packet->buffer,trace->packet.buffer,trace->packet.size);
     
    15311556                                trace->packet.buffer = 0;
    15321557                                event.type = TRACE_EVENT_PACKET;
     1558                               
     1559                                gettimeofday(&stv, NULL);
     1560                                trace->start_ts = stv.tv_sec + ((double)stv.tv_usec / 1000000.0);
     1561                                trace->last_ts = ts;
     1562                               
    15331563                                return event;
    15341564                        }
Note: See TracChangeset for help on using the changeset viewer.