-#ifndef _LTT_CHANNELS_H
-#define _LTT_CHANNELS_H
+#ifndef UST_CHANNELS_H
+#define UST_CHANNELS_H
/*
* Copyright (C) 2008 Mathieu Desnoyers (mathieu.desnoyers@polymtl.ca)
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+#define _LGPL_SOURCE
#include <linux/limits.h>
#include <errno.h>
-
-#include <ust/kernelcompat.h>
-#include <kcompat/kref.h>
+#include <ust/kcompat/kcompat.h>
+#include <ust/core.h>
+#include <urcu/list.h>
+#include <urcu/ref.h>
#define EVENTS_PER_CHANNEL 65536
+#define MAX_CPUS 32
-struct ltt_trace_struct;
+struct ust_trace;
struct ust_buffer;
struct ust_channel {
/* First 32 bytes cache-hot cacheline */
- struct ltt_trace_struct *trace;
- void *buf;
+ struct ust_trace *trace;
+ int *buf_struct_shmids;
+ struct ust_buffer **buf;
int overwrite:1;
+ /* whether collection is requested upon trace start */
+ int request_collection:1;
int active:1;
unsigned int n_subbufs_order;
unsigned long commit_count_mask; /*
*/
/* End of first 32 bytes cacheline */
- /*
- * buffer_begin - called on buffer-switch to a new sub-buffer
- * @buf: the channel buffer containing the new sub-buffer
- */
- void (*buffer_begin) (struct ust_buffer *buf,
- u64 tsc, unsigned int subbuf_idx);
- /*
- * buffer_end - called on buffer-switch to a new sub-buffer
- * @buf: the channel buffer containing the previous sub-buffer
- */
- void (*buffer_end) (struct ust_buffer *buf,
- u64 tsc, unsigned int offset, unsigned int subbuf_idx);
- struct kref kref; /* Channel transport reference count */
+ struct urcu_ref urcu_ref; /* Channel transport reference count */
size_t subbuf_size;
int subbuf_size_order;
unsigned int subbuf_cnt;
const char *channel_name;
-
- int buf_shmid;
+ int n_cpus;
u32 version;
size_t alloc_size;
- struct list_head list;
+ struct cds_list_head list;
} ____cacheline_aligned;
struct ltt_channel_setting {
unsigned int subbuf_size;
unsigned int subbuf_cnt;
- struct kref kref; /* Number of references to structure content */
- struct list_head list;
+ struct urcu_ref urcu_ref; /* Number of references to structure content */
+ struct cds_list_head list;
unsigned int index; /* index of channel in trace channel array */
u16 free_event_id; /* Next event ID to allocate */
char name[PATH_MAX];
extern int ltt_channels_get_index_from_name(const char *name);
extern struct ust_channel *ltt_channels_trace_alloc(unsigned int *nr_channels,
int overwrite,
+ int request_collection,
int active);
extern void ltt_channels_trace_free(struct ust_channel *channels);
extern int _ltt_channels_get_event_id(const char *channel, const char *name);
extern int ltt_channels_get_event_id(const char *channel, const char *name);
-#endif /* _LTT_CHANNELS_H */
+extern int ust_channels_overwrite_by_default;
+extern int ust_channels_request_collection_by_default;
+
+#endif /* UST_CHANNELS_H */