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; }
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; }
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; }
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; }