X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fcommon%2Fmi-lttng.c;h=a250546d75bfe45d1c974725187ffef258d19eef;hb=834978fd;hp=cd5c082fd316bb867216be8acf40c2e60ee6a387;hpb=f4a088f723845847249e069fea4d0c1b579d5fd1;p=lttng-tools.git diff --git a/src/common/mi-lttng.c b/src/common/mi-lttng.c index cd5c082fd..a250546d7 100644 --- a/src/common/mi-lttng.c +++ b/src/common/mi-lttng.c @@ -114,6 +114,17 @@ const char * const mi_lttng_loglevel_str_notice = "TRACE_NOTICE"; const char * const mi_lttng_loglevel_str_unknown = "UNKNOWN"; const char * const mi_lttng_loglevel_str_warning = "TRACE_WARNING"; +/* String related to loglevel JUL */ +const char * const mi_lttng_loglevel_str_jul_all = "JUL_ALL"; +const char * const mi_lttng_loglevel_str_jul_config = "JUL_CONFIG"; +const char * const mi_lttng_loglevel_str_jul_fine = "JUL_FINE"; +const char * const mi_lttng_loglevel_str_jul_finer = "JUL_FINER"; +const char * const mi_lttng_loglevel_str_jul_finest = "JUL_FINEST"; +const char * const mi_lttng_loglevel_str_jul_info = "JUL_INFO"; +const char * const mi_lttng_loglevel_str_jul_off = "JUL_OFF"; +const char * const mi_lttng_loglevel_str_jul_severe = "JUL_SEVERE"; +const char * const mi_lttng_loglevel_str_jul_warning = "JUL_WARNING"; + /* String related to loglevel type */ const char * const mi_lttng_loglevel_type_all = "ALL"; const char * const mi_lttng_loglevel_type_range = "RANGE"; @@ -132,6 +143,10 @@ const char * const mi_lttng_element_snapshot_n_ptr = "n_ptr"; const char * const mi_lttng_element_snapshot_session_name = "session_name"; const char * const mi_lttng_element_snapshots = "snapshots"; +/* This is a merge of jul loglevel and regular loglevel + * Those should never overlap by definition + * (see struct lttng_event loglevel) + */ const char *mi_lttng_loglevel_string(int value) { switch (value) { @@ -167,6 +182,24 @@ const char *mi_lttng_loglevel_string(int value) return mi_lttng_loglevel_str_debug_line; case LTTNG_LOGLEVEL_DEBUG: return mi_lttng_loglevel_str_debug; + case LTTNG_LOGLEVEL_JUL_OFF: + return mi_lttng_loglevel_str_jul_off; + case LTTNG_LOGLEVEL_JUL_SEVERE: + return mi_lttng_loglevel_str_jul_severe; + case LTTNG_LOGLEVEL_JUL_WARNING: + return mi_lttng_loglevel_str_jul_warning; + case LTTNG_LOGLEVEL_JUL_INFO: + return mi_lttng_loglevel_str_jul_info; + case LTTNG_LOGLEVEL_JUL_CONFIG: + return mi_lttng_loglevel_str_jul_config; + case LTTNG_LOGLEVEL_JUL_FINE: + return mi_lttng_loglevel_str_jul_fine; + case LTTNG_LOGLEVEL_JUL_FINER: + return mi_lttng_loglevel_str_jul_finer; + case LTTNG_LOGLEVEL_JUL_FINEST: + return mi_lttng_loglevel_str_jul_finest; + case LTTNG_LOGLEVEL_JUL_ALL: + return mi_lttng_loglevel_str_jul_all; default: return mi_lttng_loglevel_str_unknown; } @@ -272,6 +305,8 @@ const char *mi_lttng_domaintype_string(enum lttng_domain_type value) return config_domain_type_ust; case LTTNG_DOMAIN_JUL: return config_domain_type_jul; + case LTTNG_DOMAIN_LOG4J: + return config_domain_type_log4j; default: /* Should not have an unknown domain */ assert(0); @@ -319,7 +354,7 @@ struct mi_writer *mi_lttng_writer_create(int fd_output, int mi_output_type) goto end; } if (mi_output_type == LTTNG_MI_XML) { - mi_writer->writer = config_writer_create(fd_output); + mi_writer->writer = config_writer_create(fd_output, 0); if (!mi_writer->writer) { goto err_destroy; } @@ -456,7 +491,7 @@ int mi_lttng_version(struct mi_writer *writer, struct mi_lttng_version *version, /* Version string (contain info like rc etc.) */ ret = mi_lttng_writer_write_element_string(writer, - mi_lttng_element_version_str, VERSION); + mi_lttng_element_version_str, version->version); if (ret) { goto end; } @@ -628,7 +663,11 @@ int mi_lttng_domain(struct mi_writer *writer, goto end; } - /* TODO: attr... not sure how to use the union.... */ + /* TODO: union attr + * This union is not currently used and was added for + * future ust domain support. + * Date: 25-06-2014 + * */ if (!is_open) { /* Closing domain element */ @@ -875,6 +914,16 @@ int mi_lttng_event_function_probe(struct mi_writer *writer, { int ret; + ret = mi_lttng_writer_open_element(writer, config_element_attributes); + if (ret) { + goto end; + } + + ret = mi_lttng_writer_open_element(writer, config_element_probe_attributes); + if (ret) { + goto end; + } + if (event->attr.probe.addr != 0) { /* event probe address */ ret = mi_lttng_writer_write_element_unsigned_int(writer, @@ -897,6 +946,9 @@ int mi_lttng_event_function_probe(struct mi_writer *writer, goto end; } } + + /* Close probe_attributes and attributes */ + ret = mi_lttng_close_multi_element(writer, 2); end: return ret; } @@ -905,9 +957,29 @@ LTTNG_HIDDEN int mi_lttng_event_function_entry(struct mi_writer *writer, struct lttng_event *event) { + int ret; + + ret = mi_lttng_writer_open_element(writer, config_element_attributes); + if (ret) { + goto end; + } + + ret = mi_lttng_writer_open_element(writer, config_element_probe_attributes); + if (ret) { + goto end; + } + /* event probe symbol_name */ - return mi_lttng_writer_write_element_string(writer, + ret = mi_lttng_writer_write_element_string(writer, config_element_symbol_name, event->attr.ftrace.symbol_name); + if (ret) { + goto end; + } + + /* Close function_attributes and attributes */ + ret = mi_lttng_close_multi_element(writer, 2); +end: + return ret; } LTTNG_HIDDEN @@ -937,6 +1009,8 @@ int mi_lttng_event(struct mi_writer *writer, } break; } + case LTTNG_EVENT_FUNCTION: + /* Fallthrough */ case LTTNG_EVENT_PROBE: ret = mi_lttng_event_function_probe(writer, event); break;