//ust// unsigned int page_count; /* number of current buffer pages */
unsigned int finalized; /* buffer has been finalized */
//ust// unsigned int cpu; /* this buf's cpu */
+ int shmid; /* the shmid of the buffer data pages */
} ____cacheline_aligned;
/*
*
* The callback should return 0 if successful, negative if not.
*/
- int (*remove_buf_file)(struct rchan_buf *buf);
+//ust// int (*remove_buf_file)(struct rchan_buf *buf);
};
extern struct buf_page *ltt_relay_find_prev_page(struct rchan_buf *buf,
*/
extern const struct file_operations ltt_relay_file_operations;
+
+/* LTTng lockless logging buffer info */
+struct ltt_channel_buf_struct {
+ /* First 32 bytes cache-hot cacheline */
+ local_t offset; /* Current offset in the buffer */
+ local_t *commit_count; /* Commit count per sub-buffer */
+ atomic_long_t consumed; /*
+ * Current offset in the buffer
+ * standard atomic access (shared)
+ */
+ unsigned long last_tsc; /*
+ * Last timestamp written in the buffer.
+ */
+ /* End of first 32 bytes cacheline */
+ atomic_long_t active_readers; /*
+ * Active readers count
+ * standard atomic access (shared)
+ */
+ local_t events_lost;
+ local_t corrupted_subbuffers;
+//ust// spinlock_t full_lock; /*
+//ust// * buffer full condition spinlock, only
+//ust// * for userspace tracing blocking mode
+//ust// * synchronization with reader.
+//ust// */
+//ust// wait_queue_head_t write_wait; /*
+//ust// * Wait queue for blocking user space
+//ust// * writers
+//ust// */
+//ust// atomic_t wakeup_readers; /* Boolean : wakeup readers waiting ? */
+ /* one byte is written to this pipe when data is available, in order
+ to wake the consumer */
+ /* portability: Single byte writes must be as quick as possible. The kernel-side
+ buffer must be large enough so the writer doesn't block. From the pipe(7)
+ man page: Since linux 2.6.11, the pipe capacity is 65536 bytes. */
+ int data_ready_fd_write;
+ /* the reading end of the pipe */
+ int data_ready_fd_read;
+} ____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 */