Fix empty streams
This commit is contained in:
parent
4e23d7d435
commit
c42711908b
11
Makefile
11
Makefile
@ -1,8 +1,8 @@
|
|||||||
CFLAGS=-fPIC
|
CFLAGS=-fPIC
|
||||||
|
|
||||||
# Debug CFLAGS
|
# Debug CFLAGS
|
||||||
#CFLAGS+=-fsanitize=address
|
CFLAGS+=-fsanitize=address
|
||||||
#LDFLAGS+=-fsanitize=address
|
LDFLAGS+=-fsanitize=address
|
||||||
CFLAGS+=-g -O0
|
CFLAGS+=-g -O0
|
||||||
|
|
||||||
# Performance CFLAGS
|
# Performance CFLAGS
|
||||||
@ -10,7 +10,7 @@ CFLAGS+=-g -O0
|
|||||||
#CFLAGS+=-fstack-protector-explicit
|
#CFLAGS+=-fstack-protector-explicit
|
||||||
#CFLAGS+=-flto
|
#CFLAGS+=-flto
|
||||||
|
|
||||||
BIN=dump libovni.a test_speed ovni2prv emu
|
BIN=dump test_speed ovni2prv emu libovni.so
|
||||||
|
|
||||||
all: $(BIN)
|
all: $(BIN)
|
||||||
|
|
||||||
@ -21,7 +21,10 @@ dump: ovni.o dump.o
|
|||||||
|
|
||||||
test_speed: test_speed.c ovni.o
|
test_speed: test_speed.c ovni.o
|
||||||
|
|
||||||
emu: emu.o emu_ovni.o emu_nosv.o ovni.o
|
emu: emu.o emu_ovni.o emu_nosv.o ovni.o prv.o
|
||||||
|
|
||||||
|
libovni.so: ovni.o
|
||||||
|
$(LINK.c) -shared $^ -o $@
|
||||||
|
|
||||||
ovni2prv: ovni2prv.c ovni.o
|
ovni2prv: ovni2prv.c ovni.o
|
||||||
|
|
||||||
|
@ -224,7 +224,6 @@ pre_type(struct ovni_emu *emu)
|
|||||||
void
|
void
|
||||||
hook_pre_nosv(struct ovni_emu *emu)
|
hook_pre_nosv(struct ovni_emu *emu)
|
||||||
{
|
{
|
||||||
dbg("pre nosv\n");
|
|
||||||
switch(emu->cur_ev->header.class)
|
switch(emu->cur_ev->header.class)
|
||||||
{
|
{
|
||||||
case 'T': pre_task(emu); break;
|
case 'T': pre_task(emu); break;
|
||||||
@ -276,7 +275,6 @@ emit_task(struct ovni_emu *emu)
|
|||||||
void
|
void
|
||||||
hook_emit_nosv(struct ovni_emu *emu)
|
hook_emit_nosv(struct ovni_emu *emu)
|
||||||
{
|
{
|
||||||
dbg("pre nosv\n");
|
|
||||||
switch(emu->cur_ev->header.class)
|
switch(emu->cur_ev->header.class)
|
||||||
{
|
{
|
||||||
case 'T': emit_task(emu); break;
|
case 'T': emit_task(emu); break;
|
||||||
|
30
ovni.c
30
ovni.c
@ -620,6 +620,16 @@ load_stream_buf(struct ovni_stream *stream, struct ovni_ethread *thread)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(st.st_size == 0)
|
||||||
|
{
|
||||||
|
err("warning: stream %s is empty\n", stream->tid);
|
||||||
|
stream->size = 0;
|
||||||
|
stream->buf = NULL;
|
||||||
|
stream->active = 0;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
stream->size = st.st_size;
|
stream->size = st.st_size;
|
||||||
stream->buf = mmap(NULL, stream->size, PROT_READ, MAP_SHARED,
|
stream->buf = mmap(NULL, stream->size, PROT_READ, MAP_SHARED,
|
||||||
thread->stream_fd, 0);
|
thread->stream_fd, 0);
|
||||||
@ -630,6 +640,8 @@ load_stream_buf(struct ovni_stream *stream, struct ovni_ethread *thread)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stream->active = 1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -679,20 +691,20 @@ ovni_load_streams(struct ovni_trace *trace)
|
|||||||
thread = &proc->thread[k];
|
thread = &proc->thread[k];
|
||||||
stream = &trace->stream[s++];
|
stream = &trace->stream[s++];
|
||||||
|
|
||||||
|
stream->tid = thread->tid;
|
||||||
|
stream->thread = k;
|
||||||
|
stream->proc = j;
|
||||||
|
stream->loom = i;
|
||||||
|
stream->lastclock = 0;
|
||||||
|
stream->offset = 0;
|
||||||
|
stream->cur_ev = NULL;
|
||||||
|
|
||||||
if(load_stream_buf(stream, thread) != 0)
|
if(load_stream_buf(stream, thread) != 0)
|
||||||
{
|
{
|
||||||
err("load_stream_buf failed\n");
|
err("load_stream_buf failed\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
stream->tid = thread->tid;
|
|
||||||
stream->thread = k;
|
|
||||||
stream->proc = j;
|
|
||||||
stream->loom = i;
|
|
||||||
stream->active = 1;
|
|
||||||
stream->lastclock = 0;
|
|
||||||
stream->offset = 0;
|
|
||||||
stream->cur_ev = NULL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -734,7 +746,7 @@ ovni_load_next_event(struct ovni_stream *stream)
|
|||||||
if(stream->offset == stream->size)
|
if(stream->offset == stream->size)
|
||||||
{
|
{
|
||||||
stream->active = 0;
|
stream->active = 0;
|
||||||
dbg("stream runs out of events\n");
|
dbg("stream %d runs out of events\n", stream->tid);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include "ovni.h"
|
#include "ovni.h"
|
||||||
#include "ovni_trace.h"
|
#include "ovni_trace.h"
|
||||||
|
|
||||||
void emit(struct ovni_stream *stream, struct ovni_ev *ev)
|
void emit(struct ovni_stream *stream, struct ovni_ev *ev, int row)
|
||||||
{
|
{
|
||||||
static uint64_t firstclock = 0;
|
static uint64_t firstclock = 0;
|
||||||
int64_t delta;
|
int64_t delta;
|
||||||
@ -31,12 +31,12 @@ void emit(struct ovni_stream *stream, struct ovni_ev *ev)
|
|||||||
//2:0:1:1:7:1542091:6400025:1
|
//2:0:1:1:7:1542091:6400025:1
|
||||||
//2:0:1:1:7:1542091:6400017:0
|
//2:0:1:1:7:1542091:6400017:0
|
||||||
|
|
||||||
printf("2:0:1:1:%d:%ld:%d:%d\n", stream->thread+1, delta, ev->header.class, ev->header.value);
|
printf("2:0:1:1:%d:%ld:%d:%d\n", row, delta, ev->header.class, ev->header.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dump_events(struct ovni_trace *trace)
|
void dump_events(struct ovni_trace *trace)
|
||||||
{
|
{
|
||||||
int i, f;
|
int i, f, row;
|
||||||
uint64_t minclock, lastclock;
|
uint64_t minclock, lastclock;
|
||||||
struct ovni_ev *ev;
|
struct ovni_ev *ev;
|
||||||
struct ovni_stream *stream;
|
struct ovni_stream *stream;
|
||||||
@ -84,7 +84,8 @@ void dump_events(struct ovni_trace *trace)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Emit current event */
|
/* Emit current event */
|
||||||
emit(stream, stream->cur_ev);
|
row = f + 1;
|
||||||
|
emit(stream, stream->cur_ev, row);
|
||||||
|
|
||||||
lastclock = ovni_ev_get_clock(stream->cur_ev);
|
lastclock = ovni_ev_get_clock(stream->cur_ev);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user