Ejemplo n.º 1
0
LTTNG_HIDDEN
int mi_lttng_pid(struct mi_writer *writer, pid_t pid , const char *cmdline,
		int is_open)
{
	int ret;

	/* Open element pid */
	ret = mi_lttng_writer_open_element(writer, mi_lttng_element_pid);
	if (ret) {
		goto end;
	}

	/* Writing pid number */
	ret = mi_lttng_writer_write_element_signed_int(writer,
			mi_lttng_element_pid_id, (int)pid);
	if (ret) {
		goto end;
	}

	/* Writing name of the process */
	ret = mi_lttng_writer_write_element_string(writer, config_element_name,
			cmdline);
	if (ret) {
		goto end;
	}

	if (!is_open) {
		/* Closing Pid */
		ret = mi_lttng_writer_close_element(writer);
	}

end:
	return ret;
}
Ejemplo n.º 2
0
LTTNG_HIDDEN
int mi_lttng_event_field(struct mi_writer *writer,
		struct lttng_event_field *field)
{
	int ret;

	if (!field->field_name[0]) {
		ret = 0;
		goto end;
	}

	/* Open field */
	ret = mi_lttng_writer_open_element(writer, mi_lttng_element_event_field);
	if (ret) {
		goto end;
	}

	if (!field->field_name[0]) {
		goto close;
	}

	/* Name */
	ret = mi_lttng_writer_write_element_string(writer, config_element_name,
			field->field_name);
	if (ret) {
		goto end;
	}

	/* Type */
	ret = mi_lttng_writer_write_element_string(writer, config_element_type,
			mi_lttng_eventfieldtype_string(field->type));
	if (ret) {
		goto end;
	}

	/* nowrite  */
	ret = mi_lttng_writer_write_element_signed_int(writer,
			mi_lttng_element_nowrite, field->nowrite);
	if (ret) {
		goto end;
	}

close:
	/* Close field element */
	ret = mi_lttng_writer_close_element(writer);

end:
	return ret;
}
Ejemplo n.º 3
0
LTTNG_HIDDEN
int mi_lttng_pid_target(struct mi_writer *writer, pid_t pid, int is_open)
{
	int ret;

	ret = mi_lttng_writer_open_element(writer,
			config_element_target_pid);
	if (ret) {
		goto end;
	}

	/* Writing pid number
	 * Special case for element all on track untrack command
	 * All pid is represented as wildcard *
	 */
	if ((int) pid == -1) {
		ret = mi_lttng_writer_write_element_string(writer,
				config_element_pid,
				mi_lttng_element_track_untrack_all_wildcard);
	} else {
		ret = mi_lttng_writer_write_element_signed_int(writer,
				config_element_pid, (int) pid);
	}
	if (ret) {
		goto end;
	}

	if (!is_open) {
		ret = mi_lttng_writer_close_element(writer);
		if (ret) {
			goto end;
		}
	}

end:
	return ret;
}
Ejemplo n.º 4
0
LTTNG_HIDDEN
int mi_lttng_channel_attr(struct mi_writer *writer,
		struct lttng_channel_attr *attr)
{
	int ret = 0;
	struct lttng_channel *chan = caa_container_of(attr,
			struct lttng_channel, attr);
	uint64_t discarded_events, lost_packets, monitor_timer_interval;
	int64_t blocking_timeout;

	assert(attr);

	ret = lttng_channel_get_discarded_event_count(chan, &discarded_events);
	if (ret) {
		goto end;
	}

	ret = lttng_channel_get_lost_packet_count(chan, &lost_packets);
	if (ret) {
		goto end;
	}

	ret = lttng_channel_get_monitor_timer_interval(chan,
			&monitor_timer_interval);
	if (ret) {
		goto end;
	}

	ret = lttng_channel_get_blocking_timeout(chan,
			&blocking_timeout);
	if (ret) {
		goto end;
	}

	/* Opening Attributes */
	ret = mi_lttng_writer_open_element(writer, config_element_attributes);
	if (ret) {
		goto end;
	}

	/* Overwrite */
	ret = mi_lttng_writer_write_element_string(writer,
		config_element_overwrite_mode,
		attr->overwrite ? config_overwrite_mode_overwrite :
			config_overwrite_mode_discard);
	if (ret) {
		goto end;
	}

	/* Sub buffer size in byte */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_subbuf_size, attr->subbuf_size);
	if (ret) {
		goto end;
	}

	/* Number of subbuffer (power of two) */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_num_subbuf,
		attr->num_subbuf);
	if (ret) {
		goto end;
	}

	/* Switch timer interval in usec */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_switch_timer_interval,
		attr->switch_timer_interval);
	if (ret) {
		goto end;
	}

	/* Read timer interval in usec */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_read_timer_interval,
		attr->read_timer_interval);
	if (ret) {
		goto end;
	}

	/* Monitor timer interval in usec */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_monitor_timer_interval,
		monitor_timer_interval);
	if (ret) {
		goto end;
	}

	/* Retry timeout in usec */
	ret = mi_lttng_writer_write_element_signed_int(writer,
		config_element_blocking_timeout,
		blocking_timeout);
	if (ret) {
		goto end;
	}

	/* Event output */
	ret = mi_lttng_writer_write_element_string(writer,
		config_element_output_type,
		attr->output == LTTNG_EVENT_SPLICE ?
		config_output_type_splice : config_output_type_mmap);
	if (ret) {
		goto end;
	}

	/* Tracefile size in bytes */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_tracefile_size, attr->tracefile_size);
	if (ret) {
		goto end;
	}

	/* Count of tracefiles */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_tracefile_count,
		attr->tracefile_count);
	if (ret) {
		goto end;
	}

	/* Live timer interval in usec*/
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_live_timer_interval,
		attr->live_timer_interval);
	if (ret) {
		goto end;
	}

	/* Discarded events */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_discarded_events,
		discarded_events);
	if (ret) {
		goto end;
	}

	/* Lost packets */
	ret = mi_lttng_writer_write_element_unsigned_int(writer,
		config_element_lost_packets,
		lost_packets);
	if (ret) {
		goto end;
	}

	/* Closing attributes */
	ret = mi_lttng_writer_close_element(writer);
	if (ret) {
		goto end;
	}
end:
	return ret;

}