#include <stdarg.h>
//#include "list.h"
#include <ust/kernelcompat.h>
-#include "buffer.h"
-#include "relay.h"
+#include "buffers.h"
#include "channels.h"
#include "tracercore.h"
#include <ust/marker.h>
+#include <ust/probe.h>
/* Number of bytes to log with a read/write event */
#define LTT_LOG_RW_SIZE 32L
struct ltt_serialize_closure;
struct ltt_probe_private_data;
-/* Serialization callback '%k' */
-typedef size_t (*ltt_serialize_cb)(struct rchan_buf *buf, size_t buf_offset,
- struct ltt_serialize_closure *closure,
- void *serialize_private, int *largest_align,
- const char *fmt, va_list *args);
-
struct ltt_serialize_closure {
ltt_serialize_cb *callbacks;
long cb_args[LTT_NR_CALLBACKS];
unsigned int cb_idx;
};
-extern size_t ltt_serialize_data(struct rchan_buf *buf, size_t buf_offset,
+extern size_t ltt_serialize_data(struct ust_buffer *buf, size_t buf_offset,
struct ltt_serialize_closure *closure,
void *serialize_private,
int *largest_align, const char *fmt, va_list *args);
-struct ltt_available_probe {
- const char *name; /* probe name */
- const char *format;
- marker_probe_func *probe_func;
- ltt_serialize_cb callbacks[LTT_NR_CALLBACKS];
- struct list_head node; /* registered probes list */
-};
-
struct ltt_probe_private_data {
struct ltt_trace_struct *trace; /*
* Target trace, for metadata
struct marker; //ust//
extern void ltt_vtrace(const struct marker *mdata, void *probe_data,
- void *call_data, const char *fmt, va_list *args);
+ struct registers *regs, void *call_data, const char *fmt, va_list *args);
extern void ltt_trace(const struct marker *mdata, void *probe_data,
- void *call_data, const char *fmt, ...);
+ struct registers *regs, void *call_data, const char *fmt, ...);
/*
* Unique ID assigned to each registered probe.
struct ltt_trace_ops {
/* First 32 bytes cache-hot cacheline */
int (*reserve_slot) (struct ltt_trace_struct *trace,
- struct ltt_channel_struct *channel,
+ struct ust_channel *channel,
void **transport_data, size_t data_size,
size_t *slot_size, long *buf_offset, u64 *tsc,
unsigned int *rflags,
//ust// void (*commit_slot) (struct ltt_channel_struct *channel,
//ust// void **transport_data, long buf_offset,
//ust// size_t slot_size);
- void (*wakeup_channel) (struct ltt_channel_struct *ltt_channel);
+ void (*wakeup_channel) (struct ust_channel *channel);
int (*user_blocking) (struct ltt_trace_struct *trace,
unsigned int index, size_t data_size,
struct user_dbg_data *dbg);
- /* End of first 32 bytes cacheline */
- int (*create_dirs) (struct ltt_trace_struct *new_trace);
- void (*remove_dirs) (struct ltt_trace_struct *new_trace);
- int (*create_channel) (const char *trace_name,
- struct ltt_trace_struct *trace,
- struct dentry *dir, const char *channel_name,
- struct ltt_channel_struct *ltt_chan,
- unsigned int subbuf_size,
- unsigned int n_subbufs, int overwrite);
- void (*finish_channel) (struct ltt_channel_struct *channel);
- void (*remove_channel) (struct ltt_channel_struct *channel);
- void (*user_errors) (struct ltt_trace_struct *trace,
- unsigned int index, size_t data_size,
- struct user_dbg_data *dbg);
+ /* End of first 32 bytes cacheline */
+ int (*create_dirs) (struct ltt_trace_struct *new_trace);
+ void (*remove_dirs) (struct ltt_trace_struct *new_trace);
+ int (*create_channel) (const char *trace_name,
+ struct ltt_trace_struct *trace,
+ const char *channel_name,
+ struct ust_channel *channel,
+ unsigned int subbuf_size,
+ unsigned int n_subbufs, int overwrite);
+ void (*finish_channel) (struct ust_channel *channel);
+ void (*remove_channel) (struct ust_channel *channel);
+ void (*user_errors) (struct ltt_trace_struct *trace,
+ unsigned int index, size_t data_size,
+ struct user_dbg_data *dbg);
} ____cacheline_aligned;
struct ltt_transport {
struct ltt_trace_ops *ops;
int active;
/* Second 32 bytes cache-hot cacheline */
- struct ltt_channel_struct *channels;
+ struct ust_channel *channels;
unsigned int nr_channels;
u32 freq_scale;
u64 start_freq;
}
/*
- * ltt_get_header_size
+ * ust_get_header_size
*
* Calculate alignment offset to 32-bits. This is the alignment offset of the
* event header.
* The payload must itself determine its own alignment from the biggest type it
* contains.
* */
-static inline unsigned char ltt_get_header_size(
- struct ltt_channel_struct *channel,
+static inline unsigned char ust_get_header_size(
+ struct ust_channel *channel,
size_t offset,
size_t data_size,
size_t *before_hdr_pad,
* returns : offset where the event data must be written.
*/
static inline size_t ltt_write_event_header(struct ltt_trace_struct *trace,
- struct ltt_channel_struct *channel,
- struct rchan_buf *buf, long buf_offset,
+ struct ust_buffer *buf, long buf_offset,
u16 eID, size_t event_size,
u64 tsc, unsigned int rflags)
{
break;
}
header.id_time |= (u32)tsc & LTT_TSC_MASK;
- ltt_relay_write(buf, buf_offset, &header, sizeof(header));
+ ust_buffers_write(buf, buf_offset, &header, sizeof(header));
buf_offset += sizeof(header);
switch (rflags) {
case LTT_RFLAG_ID_SIZE_TSC:
small_size = min_t(size_t, event_size, 0xFFFFU);
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u16[]){ (u16)eID }, sizeof(u16));
buf_offset += sizeof(u16);
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u16[]){ (u16)small_size }, sizeof(u16));
buf_offset += sizeof(u16);
if (small_size == 0xFFFFU) {
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u32[]){ (u32)event_size }, sizeof(u32));
buf_offset += sizeof(u32);
}
buf_offset += ltt_align(buf_offset, sizeof(u64));
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u64[]){ (u64)tsc }, sizeof(u64));
buf_offset += sizeof(u64);
break;
case LTT_RFLAG_ID_SIZE:
small_size = min_t(size_t, event_size, 0xFFFFU);
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u16[]){ (u16)eID }, sizeof(u16));
buf_offset += sizeof(u16);
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u16[]){ (u16)small_size }, sizeof(u16));
buf_offset += sizeof(u16);
if (small_size == 0xFFFFU) {
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u32[]){ (u32)event_size }, sizeof(u32));
buf_offset += sizeof(u32);
}
break;
case LTT_RFLAG_ID:
- ltt_relay_write(buf, buf_offset,
+ ust_buffers_write(buf, buf_offset,
(u16[]){ (u16)eID }, sizeof(u16));
buf_offset += sizeof(u16);
break;
*/
static inline int ltt_reserve_slot(
struct ltt_trace_struct *trace,
- struct ltt_channel_struct *channel,
+ struct ust_channel *channel,
void **transport_data,
size_t data_size,
size_t *slot_size,
extern void ltt_write_trace_header(struct ltt_trace_struct *trace,
struct ltt_subbuffer_header *header);
-extern void ltt_buffer_destroy(struct ltt_channel_struct *ltt_chan);
+extern void ltt_buffer_destroy(struct ust_channel *ltt_chan);
extern void ltt_core_register(int (*function)(u8, void *));
extern void ltt_release_trace(struct kref *kref);
extern void ltt_release_transport(struct kref *kref);
-extern int ltt_probe_register(struct ltt_available_probe *pdata);
-extern int ltt_probe_unregister(struct ltt_available_probe *pdata);
-extern int ltt_marker_connect(const char *channel, const char *mname,
- const char *pname);
-extern int ltt_marker_disconnect(const char *channel, const char *mname,
- const char *pname);
extern void ltt_dump_marker_state(struct ltt_trace_struct *trace);
extern void ltt_lock_traces(void);