struct lttng_uri *relayd_uri,
struct consumer_output *consumer,
struct consumer_socket *consumer_sock,
- char *session_name, char *hostname, int session_live_timer)
+ const char *session_name, const char *hostname,
+ int session_live_timer)
{
int ret;
struct lttcomm_relayd_sock *rsock = NULL;
static enum lttng_error_code send_consumer_relayd_sockets(
enum lttng_domain_type domain,
unsigned int session_id, struct consumer_output *consumer,
- struct consumer_socket *sock, char *session_name,
- char *hostname, int session_live_timer)
+ struct consumer_socket *sock, const char *session_name,
+ const char *hostname, int session_live_timer)
{
enum lttng_error_code status = LTTNG_OK;
*/
static enum lttng_error_code set_relayd_for_snapshot(
struct consumer_output *consumer,
- struct snapshot_output *snap_output,
- struct ltt_session *session)
+ const struct snapshot_output *snap_output,
+ const struct ltt_session *session)
{
enum lttng_error_code status = LTTNG_OK;
struct lttng_ht_iter iter;
*
* Return LTTNG_OK on success or a LTTNG_ERR code.
*/
-static enum lttng_error_code record_kernel_snapshot(struct ltt_kernel_session *ksess,
- struct snapshot_output *output, struct ltt_session *session,
+static enum lttng_error_code record_kernel_snapshot(
+ struct ltt_kernel_session *ksess,
+ const struct snapshot_output *output,
+ const struct ltt_session *session,
int wait, uint64_t nb_packets_per_stream)
{
int ret;
* Returns LTTNG_OK on success or a LTTNG_ERR error code.
*/
static enum lttng_error_code record_ust_snapshot(struct ltt_ust_session *usess,
- struct snapshot_output *output, struct ltt_session *session,
- int wait, uint64_t nb_packets_per_stream)
+ const struct snapshot_output *output,
+ const struct ltt_session *session, int wait,
+ uint64_t nb_packets_per_stream)
{
int ret;
enum lttng_error_code status;
goto error_snapshot;
}
- status = ust_app_snapshot_record(usess, output, wait, nb_packets_per_stream);
+ status = ust_app_snapshot_record(usess, output, wait,
+ nb_packets_per_stream);
if (status != LTTNG_OK) {
goto error_snapshot;
}
}
static
-uint64_t get_session_size_one_more_packet_per_stream(struct ltt_session *session,
- uint64_t cur_nr_packets)
+uint64_t get_session_size_one_more_packet_per_stream(
+ const struct ltt_session *session, uint64_t cur_nr_packets)
{
uint64_t tot_size = 0;
if (session->kernel_session) {
struct ltt_kernel_channel *chan;
- struct ltt_kernel_session *ksess = session->kernel_session;
+ const struct ltt_kernel_session *ksess =
+ session->kernel_session;
cds_list_for_each_entry(chan, &ksess->channel_list.head, list) {
if (cur_nr_packets >= chan->channel->attr.num_subbuf) {
}
if (session->ust_session) {
- struct ltt_ust_session *usess = session->ust_session;
+ const struct ltt_ust_session *usess = session->ust_session;
tot_size += ust_app_get_size_one_more_packet_per_stream(usess,
cur_nr_packets);
* in between this call and actually grabbing data.
*/
static
-int64_t get_session_nb_packets_per_stream(struct ltt_session *session, uint64_t max_size)
+int64_t get_session_nb_packets_per_stream(const struct ltt_session *session,
+ uint64_t max_size)
{
int64_t size_left;
uint64_t cur_nb_packets = 0;
for (;;) {
uint64_t one_more_packet_tot_size;
- one_more_packet_tot_size = get_session_size_one_more_packet_per_stream(session,
- cur_nb_packets);
+ one_more_packet_tot_size = get_session_size_one_more_packet_per_stream(
+ session, cur_nb_packets);
if (!one_more_packet_tot_size) {
/* We are already grabbing all packets. */
break;
return cur_nb_packets;
}
+static
+enum lttng_error_code snapshot_record(const struct ltt_session *session,
+ const struct snapshot_output *snapshot_output, int wait)
+{
+ int64_t nb_packets_per_stream;
+ enum lttng_error_code ret = LTTNG_OK;
+
+ nb_packets_per_stream = get_session_nb_packets_per_stream(session,
+ snapshot_output->max_size);
+ if (nb_packets_per_stream < 0) {
+ ret = LTTNG_ERR_MAX_SIZE_INVALID;
+ goto end;
+ }
+
+ if (session->kernel_session) {
+ ret = record_kernel_snapshot(session->kernel_session,
+ snapshot_output, session,
+ wait, nb_packets_per_stream);
+ if (ret != LTTNG_OK) {
+ goto end;
+ }
+ }
+
+ if (session->ust_session) {
+ ret = record_ust_snapshot(session->ust_session,
+ snapshot_output, session,
+ wait, nb_packets_per_stream);
+ if (ret != LTTNG_OK) {
+ goto end;
+ }
+ }
+end:
+ return ret;
+}
+
/*
* Command LTTNG_SNAPSHOT_RECORD from lib lttng ctl.
*
}
if (use_tmp_output) {
- int64_t nb_packets_per_stream;
-
- nb_packets_per_stream = get_session_nb_packets_per_stream(session,
- tmp_output.max_size);
- if (nb_packets_per_stream < 0) {
- cmd_ret = LTTNG_ERR_MAX_SIZE_INVALID;
+ cmd_ret = snapshot_record(session, &tmp_output, wait);
+ if (cmd_ret != LTTNG_OK) {
goto error;
}
-
- if (session->kernel_session) {
- cmd_ret = record_kernel_snapshot(session->kernel_session,
- &tmp_output, session,
- wait, nb_packets_per_stream);
- if (cmd_ret != LTTNG_OK) {
- goto error;
- }
- }
-
- if (session->ust_session) {
- cmd_ret = record_ust_snapshot(session->ust_session,
- &tmp_output, session,
- wait, nb_packets_per_stream);
- if (cmd_ret != LTTNG_OK) {
- goto error;
- }
- }
-
snapshot_success = 1;
} else {
struct snapshot_output *sout;
rcu_read_lock();
cds_lfht_for_each_entry(session->snapshot.output_ht->ht,
&iter.iter, sout, node.node) {
- int64_t nb_packets_per_stream;
-
/*
- * Make a local copy of the output and assign the possible
- * temporary value given by the caller.
+ * Make a local copy of the output and assign the
+ * possible temporary value given by the caller.
*/
- memset(&tmp_output, 0, sizeof(tmp_output));
memcpy(&tmp_output, sout, sizeof(tmp_output));
if (output->max_size != (uint64_t) -1ULL) {
tmp_output.max_size = output->max_size;
}
- nb_packets_per_stream = get_session_nb_packets_per_stream(session,
- tmp_output.max_size);
- if (nb_packets_per_stream < 0) {
- cmd_ret = LTTNG_ERR_MAX_SIZE_INVALID;
- rcu_read_unlock();
- goto error;
- }
+ tmp_output.nb_snapshot = session->snapshot.nb_snapshot;
+ memcpy(tmp_output.datetime, datetime, sizeof(datetime));
/* Use temporary name. */
if (*output->name != '\0') {
}
}
- tmp_output.nb_snapshot = session->snapshot.nb_snapshot;
- memcpy(tmp_output.datetime, datetime, sizeof(datetime));
-
- if (session->kernel_session) {
- cmd_ret = record_kernel_snapshot(session->kernel_session,
- &tmp_output, session,
- wait, nb_packets_per_stream);
- if (cmd_ret != LTTNG_OK) {
- rcu_read_unlock();
- goto error;
- }
- }
-
- if (session->ust_session) {
- cmd_ret = record_ust_snapshot(session->ust_session,
- &tmp_output, session,
- wait, nb_packets_per_stream);
- if (cmd_ret != LTTNG_OK) {
- rcu_read_unlock();
- goto error;
- }
+ cmd_ret = snapshot_record(session, &tmp_output, wait);
+ if (cmd_ret != LTTNG_OK) {
+ rcu_read_unlock();
+ goto error;
}
snapshot_success = 1;
}
int consumer_send_relayd_socket(struct consumer_socket *consumer_sock,
struct lttcomm_relayd_sock *rsock, struct consumer_output *consumer,
enum lttng_stream_type type, uint64_t session_id,
- char *session_name, char *hostname, int session_live_timer)
+ const char *session_name, const char *hostname,
+ int session_live_timer)
{
int ret;
struct lttcomm_consumer_msg msg;
* Returns LTTNG_OK on success or else an LTTng error code.
*/
enum lttng_error_code consumer_snapshot_channel(struct consumer_socket *socket,
- uint64_t key, struct snapshot_output *output, int metadata,
+ uint64_t key, const struct snapshot_output *output, int metadata,
uid_t uid, gid_t gid, const char *session_path, int wait,
uint64_t nb_packets_per_stream, uint64_t trace_archive_id)
{
int consumer_send_relayd_socket(struct consumer_socket *consumer_sock,
struct lttcomm_relayd_sock *rsock, struct consumer_output *consumer,
enum lttng_stream_type type, uint64_t session_id,
- char *session_name, char *hostname, int session_live_timer);
+ const char *session_name, const char *hostname,
+ int session_live_timer);
int consumer_send_channel_monitor_pipe(struct consumer_socket *consumer_sock,
int pipe);
int consumer_send_destroy_relayd(struct consumer_socket *sock,
/* Snapshot command. */
enum lttng_error_code consumer_snapshot_channel(struct consumer_socket *socket,
- uint64_t key, struct snapshot_output *output, int metadata,
+ uint64_t key, const struct snapshot_output *output, int metadata,
uid_t uid, gid_t gid, const char *session_path, int wait,
uint64_t nb_packets_per_stream, uint64_t trace_archive_id);
*
* Return LTTNG_OK on success or else return a LTTNG_ERR code.
*/
-enum lttng_error_code kernel_snapshot_record(struct ltt_kernel_session *ksess,
- struct snapshot_output *output, int wait,
+enum lttng_error_code kernel_snapshot_record(
+ struct ltt_kernel_session *ksess,
+ const struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream)
{
int err, ret, saved_metadata_fd;
struct lttng_kernel_tracer_abi_version *kernel_tracer_abi_version);
void kernel_destroy_session(struct ltt_kernel_session *ksess);
void kernel_destroy_channel(struct ltt_kernel_channel *kchan);
-enum lttng_error_code kernel_snapshot_record(struct ltt_kernel_session *ksess,
- struct snapshot_output *output, int wait,
+enum lttng_error_code kernel_snapshot_record(
+ struct ltt_kernel_session *ksess,
+ const struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream);
int kernel_syscall_mask(int chan_fd, char **syscall_mask, uint32_t *nr_bits);
enum lttng_error_code kernel_rotate_session(struct ltt_session *session);
* Lookup sesison wrapper.
*/
static
-void __lookup_session_by_app(struct ltt_ust_session *usess,
+void __lookup_session_by_app(const struct ltt_ust_session *usess,
struct ust_app *app, struct lttng_ht_iter *iter)
{
/* Get right UST app session from app */
* id.
*/
static struct ust_app_session *lookup_session_by_app(
- struct ltt_ust_session *usess, struct ust_app *app)
+ const struct ltt_ust_session *usess, struct ust_app *app)
{
struct lttng_ht_iter iter;
struct lttng_ht_node_u64 *node;
*
* Returns LTTNG_OK on success or a LTTNG_ERR error code.
*/
-enum lttng_error_code ust_app_snapshot_record(struct ltt_ust_session *usess,
- struct snapshot_output *output, int wait,
+enum lttng_error_code ust_app_snapshot_record(
+ const struct ltt_ust_session *usess,
+ const struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream)
{
int ret = 0;
/*
* Return the size taken by one more packet per stream.
*/
-uint64_t ust_app_get_size_one_more_packet_per_stream(struct ltt_ust_session *usess,
- uint64_t cur_nr_packets)
+uint64_t ust_app_get_size_one_more_packet_per_stream(
+ const struct ltt_ust_session *usess, uint64_t cur_nr_packets)
{
uint64_t tot_size = 0;
struct ust_app *app;
ssize_t ust_app_push_metadata(struct ust_registry_session *registry,
struct consumer_socket *socket, int send_zero_data);
void ust_app_destroy(struct ust_app *app);
-enum lttng_error_code ust_app_snapshot_record(struct ltt_ust_session *usess,
- struct snapshot_output *output, int wait,
+enum lttng_error_code ust_app_snapshot_record(
+ const struct ltt_ust_session *usess,
+ const struct snapshot_output *output, int wait,
uint64_t nb_packets_per_stream);
uint64_t ust_app_get_size_one_more_packet_per_stream(
- struct ltt_ust_session *usess, uint64_t cur_nr_packets);
+ const struct ltt_ust_session *usess, uint64_t cur_nr_packets);
struct ust_app *ust_app_find_by_sock(int sock);
int ust_app_uid_get_channel_runtime_stats(uint64_t ust_session_id,
struct cds_list_head *buffer_reg_uid_list,
* Lookup function in hashtable.
*/
LTTNG_HIDDEN
-void lttng_ht_lookup(struct lttng_ht *ht, void *key,
+void lttng_ht_lookup(struct lttng_ht *ht, const void *key,
struct lttng_ht_iter *iter)
{
assert(ht);
void lttng_ht_node_free_two_u64(struct lttng_ht_node_two_u64 *node);
LTTNG_HIDDEN
-void lttng_ht_lookup(struct lttng_ht *ht, void *key,
+void lttng_ht_lookup(struct lttng_ht *ht, const void *key,
struct lttng_ht_iter *iter);
/* Specialized add unique functions */
* payload size is introduced.
*/
static int relayd_create_session_2_11(struct lttcomm_relayd_sock *rsock,
- char *session_name, char *hostname,
+ const char *session_name, const char *hostname,
int session_live_timer, unsigned int snapshot,
uint64_t sessiond_session_id, const lttng_uuid sessiond_uuid)
{
* support the live reading capability.
*/
static int relayd_create_session_2_4(struct lttcomm_relayd_sock *rsock,
- char *session_name, char *hostname, int session_live_timer,
- unsigned int snapshot)
+ const char *session_name, const char *hostname,
+ int session_live_timer, unsigned int snapshot)
{
int ret;
struct lttcomm_relayd_create_session_2_4 msg;
* On success, return 0 else a negative value which is either an errno error or
* a lttng error code from the relayd.
*/
-int relayd_create_session(struct lttcomm_relayd_sock *rsock, uint64_t *relayd_session_id,
- char *session_name, char *hostname, int session_live_timer,
+int relayd_create_session(struct lttcomm_relayd_sock *rsock,
+ uint64_t *relayd_session_id,
+ const char *session_name, const char *hostname,
+ int session_live_timer,
unsigned int snapshot, uint64_t sessiond_session_id,
const lttng_uuid sessiond_uuid)
{
int relayd_connect(struct lttcomm_relayd_sock *sock);
int relayd_close(struct lttcomm_relayd_sock *sock);
int relayd_create_session(struct lttcomm_relayd_sock *sock,
- uint64_t *relayd_session_id, char *session_name, char *hostname,
- int session_live_timer, unsigned int snapshot,
- uint64_t sessiond_session_id, const lttng_uuid sessiond_uuid);
+ uint64_t *relayd_session_id, const char *session_name,
+ const char *hostname, int session_live_timer,
+ unsigned int snapshot, uint64_t sessiond_session_id,
+ const lttng_uuid sessiond_uuid);
int relayd_add_stream(struct lttcomm_relayd_sock *sock, const char *channel_name,
const char *pathname, uint64_t *stream_id,
uint64_t tracefile_size, uint64_t tracefile_count,