- const struct tracepoint_loglevel_entry *ev_ll;
-
- if (!(probe_desc->event_desc[i]->loglevel))
- continue;
- ev_ll = *probe_desc->event_desc[i]->loglevel;
- if (!strcmp(ev_ll->identifier, entry->name)) {
- struct ltt_event *ev;
- int ret;
-
- /* create event */
- ret = ltt_event_create(loglevel->chan,
- &loglevel->event_param, NULL,
- &ev);
- /*
- * TODO: report error.
- */
- if (ret)
- continue;
- cds_list_add(&ev->loglevel_list,
- &loglevel->events);
+ const struct lttng_event_desc *event_desc =
+ probe_desc->event_desc[i];
+ int j;
+
+ for (j = 0; j < event_desc->nr_fields; j++) {
+ const struct lttng_event_field *event_field =
+ &event_desc->fields[j];
+ struct tp_field_list_entry *list_entry;
+
+ list_entry = zmalloc(sizeof(*list_entry));
+ if (!list_entry)
+ goto err_nomem;
+ cds_list_add(&list_entry->head, &list->head);
+ strncpy(list_entry->field.event_name,
+ event_desc->name,
+ LTTNG_UST_SYM_NAME_LEN);
+ list_entry->field.event_name[LTTNG_UST_SYM_NAME_LEN - 1] = '\0';
+ strncpy(list_entry->field.field_name,
+ event_field->name,
+ LTTNG_UST_SYM_NAME_LEN);
+ list_entry->field.field_name[LTTNG_UST_SYM_NAME_LEN - 1] = '\0';
+ switch (event_field->type.atype) {
+ case atype_integer:
+ list_entry->field.type = LTTNG_UST_FIELD_INTEGER;
+ break;
+ case atype_string:
+ list_entry->field.type = LTTNG_UST_FIELD_STRING;
+ break;
+ case atype_array:
+ if (event_field->type.u.array.elem_type.atype != atype_integer
+ || event_field->type.u.array.elem_type.u.basic.integer.encoding == lttng_encode_none)
+ list_entry->field.type = LTTNG_UST_FIELD_OTHER;
+ else
+ list_entry->field.type = LTTNG_UST_FIELD_STRING;
+ break;
+ case atype_sequence:
+ if (event_field->type.u.sequence.elem_type.atype != atype_integer
+ || event_field->type.u.sequence.elem_type.u.basic.integer.encoding == lttng_encode_none)
+ list_entry->field.type = LTTNG_UST_FIELD_OTHER;
+ else
+ list_entry->field.type = LTTNG_UST_FIELD_STRING;
+ break;
+ case atype_float:
+ list_entry->field.type = LTTNG_UST_FIELD_FLOAT;
+ break;
+ case atype_enum:
+ list_entry->field.type = LTTNG_UST_FIELD_ENUM;
+ break;
+ default:
+ list_entry->field.type = LTTNG_UST_FIELD_OTHER;
+ }
+ if (!event_desc->loglevel) {
+ list_entry->field.loglevel = TRACE_DEFAULT;
+ } else {
+ list_entry->field.loglevel = *(*event_desc->loglevel);
+ }