X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=libust%2Frelay.h;h=cb5c43847d273f6fa3c19232416b8b5f28b5524a;hb=c61f73854065e0d4562c4ddcefebe756510540af;hp=ddbb81274920835ff3dcc18077e60c5bba617140;hpb=8431032f4fc1ce2c758568e27685a3e46265a745;p=ust.git diff --git a/libust/relay.h b/libust/relay.h index ddbb812..cb5c438 100644 --- a/libust/relay.h +++ b/libust/relay.h @@ -21,9 +21,11 @@ //ust// #include //ust// #include //ust// #include -#include "kref.h" -#include "list.h" +#include +#include +//#include "list.h" #include "channels.h" +#include "buffer.h" /* Needs a _much_ better name... */ #define FIX_SIZE(x) ((((x) - 1) & PAGE_MASK) + PAGE_SIZE) @@ -290,13 +292,16 @@ static inline int ltt_relay_write(struct rchan_buf *buf, size_t offset, //ust// _ltt_relay_write(buf, offset, src, len, page, pagecpy); //ust// return len; - size_t cpy; - cpy = min_t(size_t, len, buf->buf_size - offset); - ltt_relay_do_copy(buf->buf_data + offset, src, cpy); + size_t buf_offset = BUFFER_OFFSET(offset, buf->chan); + + assert(buf_offset < buf->chan->subbuf_size*buf->chan->n_subbufs); + + cpy = min_t(size_t, len, buf->buf_size - buf_offset); + ltt_relay_do_copy(buf->buf_data + buf_offset, src, cpy); if (unlikely(len != cpy)) - _ltt_relay_write(buf, offset, src, len, cpy); + _ltt_relay_write(buf, buf_offset, src, len, cpy); return len; }