We have experience serveral cases of such mismatches. To make it easier to
debug, let's warn users of the event's and the provide's name.
Signed-off-by: He Zhe <zhe.he@windriver.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I455bf92f9f735f890753c9103d22986e56e02e5d
static
int check_event_provider(struct lttng_kernel_probe_desc *desc)
{
static
int check_event_provider(struct lttng_kernel_probe_desc *desc)
{
size_t provider_name_len;
provider_name_len = strnlen(desc->provider_name,
LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1);
for (i = 0; i < desc->nr_events; i++) {
size_t provider_name_len;
provider_name_len = strnlen(desc->provider_name,
LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1);
for (i = 0; i < desc->nr_events; i++) {
- if (strncmp(desc->event_desc[i]->event_name,
- desc->provider_name,
- provider_name_len))
- return 0; /* provider mismatch */
- * The event needs to contain at least provider name + _ +
+ * The event name needs to start with provider name + _ +
- if (strlen(desc->event_desc[i]->event_name) <= provider_name_len + 1)
- return 0; /* provider mismatch */
- if (desc->event_desc[i]->event_name[provider_name_len] != '_')
- return 0; /* provider mismatch */
+ if (strncmp(desc->event_desc[i]->event_name, desc->provider_name, provider_name_len))
+ mismatch = 1;
+ else if (strlen(desc->event_desc[i]->event_name) <= provider_name_len + 1)
+ mismatch = 1;
+ else if (desc->event_desc[i]->event_name[provider_name_len] != '_')
+ mismatch = 1;
+
+ if (mismatch) {
+ printk(KERN_WARNING "LTTng: event provider mismatch: "
+ "The event name needs to start with provider "
+ "name + _ + one or more letter, "
+ "provider: %s, event name: %s\n",
+ desc->provider_name, desc->event_desc[i]->event_name);
+ return 0;
+ }