Use kref implementation from kcompat
[ust.git] / libust / relay.h
index 4b27b5bc8a7a476e5ded96c5ff7c84cbbe4287b0..cb5c43847d273f6fa3c19232416b8b5f28b5524a 100644 (file)
 //ust// #include <linux/kref.h>
 //ust// #include <linux/mm.h>
 //ust// #include <linux/ltt-core.h>
-#include "kref.h"
-#include "list.h"
+#include <assert.h>
+#include <kcompat/kref.h>
+//#include "list.h"
+#include "channels.h"
+#include "buffer.h"
 
 /* Needs a _much_ better name... */
 #define FIX_SIZE(x) ((((x) - 1) & PAGE_MASK) + PAGE_SIZE)
@@ -289,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;
 }
 
@@ -320,7 +326,7 @@ extern const struct file_operations ltt_relay_file_operations;
 struct ltt_channel_buf_struct {
        /* First 32 bytes cache-hot cacheline */
        local_t offset;                 /* Current offset in the buffer */
-//ust//        local_t *commit_count;          /* Commit count per sub-buffer */
+       local_t *commit_count;          /* Commit count per sub-buffer */
        atomic_long_t consumed;         /*
                                         * Current offset in the buffer
                                         * standard atomic access (shared)
@@ -329,6 +335,9 @@ struct ltt_channel_buf_struct {
                                         * Last timestamp written in the buffer.
                                         */
        /* End of first 32 bytes cacheline */
+//ust// #ifdef CONFIG_LTT_VMCORE
+//ust//        local_t *commit_seq;            /* Consecutive commits */
+//ust// #endif
        atomic_long_t active_readers;   /*
                                         * Active readers count
                                         * standard atomic access (shared)
@@ -355,13 +364,11 @@ struct ltt_channel_buf_struct {
        int data_ready_fd_read;
 
        /* commit count per subbuffer; must be at end of struct */
-       local_t commit_count[0] ____cacheline_aligned;
+       local_t commit_seq[0] ____cacheline_aligned;
 } ____cacheline_aligned;
 
 int ltt_do_get_subbuf(struct rchan_buf *buf, struct ltt_channel_buf_struct *ltt_buf, long *pconsumed_old);
 
 int ltt_do_put_subbuf(struct rchan_buf *buf, struct ltt_channel_buf_struct *ltt_buf, u32 uconsumed_old);
 
-
 #endif /* _LINUX_LTT_RELAY_H */
-
This page took 0.024233 seconds and 4 git commands to generate.