struct lttng_ctx_field *fields;
unsigned int nr_fields;
unsigned int allocated_fields;
+ size_t largest_align; /* in bytes */
};
struct lttng_event_desc {
const void *src, size_t len);
void (*event_memset)(struct lib_ring_buffer_ctx *ctx,
int c, size_t len);
+ void (*event_strcpy)(struct lib_ring_buffer_ctx *ctx, const char *src,
+ size_t len);
+ void (*event_strcpy_from_user)(struct lib_ring_buffer_ctx *ctx,
+ const char __user *src, size_t len);
/*
* packet_avail_size returns the available size in the current
* packet. Note that the size returned is only a hint, since it
wait_queue_head_t read_wait; /* Reader buffer-level wait queue */
struct list_head list; /* Stream list */
struct lttng_transport *transport;
+ struct mutex lock;
};
struct lttng_session {
unsigned int metadata_written; /* Number of bytes written in metadata cache */
struct kref refcount; /* Metadata cache usage */
struct list_head metadata_stream; /* Metadata stream list */
+ uuid_le uuid; /* Trace session unique ID (copy) */
};
struct lttng_session *lttng_session_create(void);
#endif
struct lttng_ctx_field *lttng_append_context(struct lttng_ctx **ctx);
+void lttng_context_update(struct lttng_ctx *ctx);
int lttng_find_context(struct lttng_ctx *ctx, const char *name);
void lttng_remove_context_field(struct lttng_ctx **ctx,
struct lttng_ctx_field *field);