X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=78f1f053d7cd6b47f07d84b03700a04ccab7f13e;hb=c2afda67713866265294d11c72deca6edba05969;hp=5a6414ebbe4991f48b4450d64d31c32f1d1ce00e;hpb=b583ad836a07eb17b3abebc9354e49a9ce415492;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 5a6414ebb..78f1f053d 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -2650,31 +2650,43 @@ error: /* * Command LTTNG_LIST_TRACEPOINT_FIELDS processed by the client thread. */ -ssize_t cmd_list_tracepoint_fields(enum lttng_domain_type domain, - struct lttng_event_field **fields) +enum lttng_error_code cmd_list_tracepoint_fields(enum lttng_domain_type domain, + struct lttng_dynamic_buffer *buffer, unsigned int *nb_fields) { + enum lttng_error_code ret_code; int ret; - ssize_t nb_fields = 0; + unsigned int i; + struct lttng_event_field *fields = NULL; switch (domain) { case LTTNG_DOMAIN_UST: - nb_fields = ust_app_list_event_fields(fields); - if (nb_fields < 0) { - ret = LTTNG_ERR_UST_LIST_FAIL; + ret = ust_app_list_event_fields(&fields); + if (ret < 0) { + ret_code = LTTNG_ERR_UST_LIST_FAIL; goto error; } break; case LTTNG_DOMAIN_KERNEL: default: /* fall-through */ - ret = LTTNG_ERR_UND; + ret_code = LTTNG_ERR_UND; goto error; } - return nb_fields; + *nb_fields = ret; + + for (i = 0; i < *nb_fields; i++) { + ret = lttng_event_field_serialize(&fields[i], buffer); + if (ret) { + ret_code = -LTTNG_ERR_NOMEM; + goto error; + } + } + + ret_code = LTTNG_OK; error: - /* Return negative value to differentiate return code */ - return -ret; + free(fields); + return ret_code; } enum lttng_error_code cmd_list_syscalls(