projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow $app.provider:ctxname in filter, enum, variant identifiers
[lttng-tools.git]
/
src
/
bin
/
lttng-sessiond
/
ust-metadata.c
diff --git
a/src/bin/lttng-sessiond/ust-metadata.c
b/src/bin/lttng-sessiond/ust-metadata.c
index fc1ea2e7b6a8f1a97b754c5c38a3972acb4badac..cb77e81300f82c6e4d20552ce7f154380389b0f3 100644
(file)
--- a/
src/bin/lttng-sessiond/ust-metadata.c
+++ b/
src/bin/lttng-sessiond/ust-metadata.c
@@
-200,6
+200,24
@@
int print_tabs(struct ust_registry_session *session, size_t nesting)
return 0;
}
return 0;
}
+static
+void sanitize_ctf_identifier(char *out, const char *in)
+{
+ size_t i;
+
+ for (i = 0; i < LTTNG_UST_SYM_NAME_LEN; i++) {
+ switch (in[i]) {
+ case '.':
+ case '$':
+ case ':':
+ out[i] = '_';
+ break;
+ default:
+ out[i] = in[i];
+ }
+ }
+}
+
/* Called with session registry mutex held. */
static
int ust_metadata_enum_statedump(struct ust_registry_session *session,
/* Called with session registry mutex held. */
static
int ust_metadata_enum_statedump(struct ust_registry_session *session,
@@
-213,6
+231,7
@@
int ust_metadata_enum_statedump(struct ust_registry_session *session,
size_t nr_entries;
int ret = 0;
size_t i;
size_t nr_entries;
int ret = 0;
size_t i;
+ char identifier[LTTNG_UST_SYM_NAME_LEN];
rcu_read_lock();
reg_enum = ust_registry_lookup_enum_by_id(session, enum_name, enum_id);
rcu_read_lock();
reg_enum = ust_registry_lookup_enum_by_id(session, enum_name, enum_id);
@@
-248,8
+267,12
@@
int ust_metadata_enum_statedump(struct ust_registry_session *session,
const struct ustctl_enum_entry *entry = &entries[i];
int j, len;
const struct ustctl_enum_entry *entry = &entries[i];
int j, len;
+ ret = print_tabs(session, nesting);
+ if (ret) {
+ goto end;
+ }
ret = lttng_metadata_printf(session,
ret = lttng_metadata_printf(session,
- "
\"");
+ "\"");
if (ret) {
goto end;
}
if (ret) {
goto end;
}
@@
-294,14
+317,18
@@
int ust_metadata_enum_statedump(struct ust_registry_session *session,
goto end;
}
}
goto end;
}
}
- ret = lttng_metadata_printf(session, " } _%s;\n",
- field_name);
+ sanitize_ctf_identifier(identifier, field_name);
+ ret = print_tabs(session, nesting);
+ if (ret) {
+ goto end;
+ }
+ ret = lttng_metadata_printf(session, "} _%s;\n",
+ identifier);
end:
(*iter_field)++;
return ret;
}
end:
(*iter_field)++;
return ret;
}
-
static
int _lttng_variant_statedump(struct ust_registry_session *session,
const struct ustctl_field *fields, size_t nr_fields,
static
int _lttng_variant_statedump(struct ust_registry_session *session,
const struct ustctl_field *fields, size_t nr_fields,
@@
-310,6
+337,7
@@
int _lttng_variant_statedump(struct ust_registry_session *session,
const struct ustctl_field *variant = &fields[*iter_field];
uint32_t nr_choices, i;
int ret;
const struct ustctl_field *variant = &fields[*iter_field];
uint32_t nr_choices, i;
int ret;
+ char identifier[LTTNG_UST_SYM_NAME_LEN];
if (variant->type.atype != ustctl_atype_variant) {
ret = -EINVAL;
if (variant->type.atype != ustctl_atype_variant) {
ret = -EINVAL;
@@
-317,9
+345,14
@@
int _lttng_variant_statedump(struct ust_registry_session *session,
}
nr_choices = variant->type.u.variant.nr_choices;
(*iter_field)++;
}
nr_choices = variant->type.u.variant.nr_choices;
(*iter_field)++;
+ sanitize_ctf_identifier(identifier, variant->type.u.variant.tag_name);
+ ret = print_tabs(session, nesting);
+ if (ret) {
+ goto end;
+ }
ret = lttng_metadata_printf(session,
ret = lttng_metadata_printf(session,
- "
variant <_%s> {\n",
-
variant->type.u.variant.tag_name
);
+ "variant <_%s> {\n",
+
identifier
);
if (ret) {
goto end;
}
if (ret) {
goto end;
}
@@
-333,9
+366,11
@@
int _lttng_variant_statedump(struct ust_registry_session *session,
fields, nr_fields,
iter_field, nesting + 1);
}
fields, nr_fields,
iter_field, nesting + 1);
}
+ sanitize_ctf_identifier(identifier, variant->name);
+ ret = print_tabs(session, nesting);
ret = lttng_metadata_printf(session,
ret = lttng_metadata_printf(session,
- "
} _%s;\n",
-
variant->name
);
+ "} _%s;\n",
+
identifier
);
if (ret) {
goto end;
}
if (ret) {
goto end;
}
This page took
0.025774 seconds
and
4
git commands to generate.