Contexts for RT debugging
[lttng-tools.git] / src / common / config / session-config.c
index 11e0dcc4ea8e24120aadb74da453ab17b6faf70e..8a0a95157f4a8a28955f2a1938090c9216e567eb 100644 (file)
@@ -95,6 +95,8 @@ const char * const config_element_output_type = "output_type";
 const char * const config_element_tracefile_size = "tracefile_size";
 const char * const config_element_tracefile_count = "tracefile_count";
 const char * const config_element_live_timer_interval = "live_timer_interval";
+const char * const config_element_discarded_events = "discarded_events";
+const char * const config_element_lost_packets = "lost_packets";
 const char * const config_element_type = "type";
 const char * const config_element_buffer_type = "buffer_type";
 const char * const config_element_session = "session";
@@ -170,7 +172,10 @@ const char * const config_event_context_hostname = "HOSTNAME";
 const char * const config_event_context_ip = "IP";
 const char * const config_event_context_perf_thread_counter = "PERF_THREAD_COUNTER";
 const char * const config_event_context_app = "APP";
-
+const char * const config_event_context_interruptible = "INTERRUPTIBLE";
+const char * const config_event_context_preemptible = "PREEMPTIBLE";
+const char * const config_event_context_need_reschedule = "NEED_RESCHEDULE";
+const char * const config_event_context_migratable = "MIGRATABLE";
 
 struct consumer_output {
        int enabled;
@@ -458,6 +463,39 @@ end:
        return ret >= 0 ? 0 : ret;
 }
 
+LTTNG_HIDDEN
+int config_writer_write_attribute(struct config_writer *writer,
+               const char *name, const char *value)
+{
+       int ret;
+       xmlChar *encoded_name = NULL;
+       xmlChar *encoded_value = NULL;
+
+       if (!writer || !writer->writer || !name || !name[0]) {
+               ret = -1;
+               goto end;
+       }
+
+       encoded_name = encode_string(name);
+       if (!encoded_name) {
+               ret = -1;
+               goto end;
+       }
+
+       encoded_value = encode_string(value);
+       if (!encoded_value) {
+               ret = -1;
+               goto end;
+       }
+
+       ret = xmlTextWriterWriteAttribute(writer->writer, encoded_name,
+                       encoded_value);
+end:
+       xmlFree(encoded_name);
+       xmlFree(encoded_value);
+       return ret >= 0 ? 0 : ret;
+}
+
 LTTNG_HIDDEN
 int config_writer_close_element(struct config_writer *writer)
 {
@@ -952,6 +990,18 @@ int get_context_type(xmlChar *context_type)
        } else if (!strcmp((char *) context_type,
                config_event_context_ip)) {
                ret = LTTNG_EVENT_CONTEXT_IP;
+       } else if (!strcmp((char *) context_type,
+               config_event_context_interruptible)) {
+               ret = LTTNG_EVENT_CONTEXT_INTERRUPTIBLE;
+       } else if (!strcmp((char *) context_type,
+               config_event_context_preemptible)) {
+               ret = LTTNG_EVENT_CONTEXT_PREEMPTIBLE;
+       } else if (!strcmp((char *) context_type,
+               config_event_context_need_reschedule)) {
+               ret = LTTNG_EVENT_CONTEXT_NEED_RESCHEDULE;
+       } else if (!strcmp((char *) context_type,
+               config_event_context_migratable)) {
+               ret = LTTNG_EVENT_CONTEXT_MIGRATABLE;
        } else {
                goto error;
        }
This page took 0.024675 seconds and 4 git commands to generate.