Implement event fields listing
[lttng-ust.git] / liblttng-ust-ctl / ustctl.c
index e4a29f99defbf4cf8b99a02b808c89e49a9cdf35..b0b5b6cc94f2997c61def90e6e30b804295abaaf 100644 (file)
@@ -486,6 +486,52 @@ int ustctl_tracepoint_list_get(int sock, int tp_list_handle,
        return 0;
 }
 
+int ustctl_tracepoint_field_list(int sock)
+{
+       struct ustcomm_ust_msg lum;
+       struct ustcomm_ust_reply lur;
+       int ret, tp_field_list_handle;
+
+       memset(&lum, 0, sizeof(lum));
+       lum.handle = LTTNG_UST_ROOT_HANDLE;
+       lum.cmd = LTTNG_UST_TRACEPOINT_FIELD_LIST;
+       ret = ustcomm_send_app_cmd(sock, &lum, &lur);
+       if (ret)
+               return ret;
+       tp_field_list_handle = lur.ret_val;
+       DBG("received tracepoint field list handle %u", tp_field_list_handle);
+       return tp_field_list_handle;
+}
+
+int ustctl_tracepoint_field_list_get(int sock, int tp_field_list_handle,
+               struct lttng_ust_field_iter *iter)
+{
+       struct ustcomm_ust_msg lum;
+       struct ustcomm_ust_reply lur;
+       int ret;
+       ssize_t len;
+
+       if (!iter)
+               return -EINVAL;
+
+       memset(&lum, 0, sizeof(lum));
+       lum.handle = tp_field_list_handle;
+       lum.cmd = LTTNG_UST_TRACEPOINT_FIELD_LIST_GET;
+       ret = ustcomm_send_app_cmd(sock, &lum, &lur);
+       if (ret)
+               return ret;
+       len = ustcomm_recv_unix_sock(sock, iter, sizeof(*iter));
+       if (len != sizeof(*iter)) {
+               return -EINVAL;
+       }
+       DBG("received tracepoint field list entry event_name %s event_loglevel %d field_name %s field_type %d",
+               iter->event_name,
+               iter->loglevel,
+               iter->field_name,
+               iter->type);
+       return 0;
+}
+
 int ustctl_tracer_version(int sock, struct lttng_ust_tracer_version *v)
 {
        struct ustcomm_ust_msg lum;
This page took 0.050383 seconds and 4 git commands to generate.