Move include/ust/ to include/lttng/
[lttng-ust.git] / libustctl / ustctl.c
index 735e63cb6f7d2cb58f182585b07620b087df8457..6f3d1ed97c6c983b52a631ab95cbdc358cfd0497 100644 (file)
  */
 
 #include <string.h>
-#include <ust/lttng-ust-ctl.h>
-#include <ust/lttng-ust-abi.h>
-#include <ust/usterr-signal-safe.h>
-#include "lttng-ust-comm.h"
+#include <lttng/ust-ctl.h>
+#include <lttng/ust-abi.h>
+#include <lttng/usterr-signal-safe.h>
+#include <lttng/ust-comm.h>
 
 #include "../libringbuffer/backend.h"
 #include "../libringbuffer/frontend.h"
 
+volatile enum ust_loglevel ust_loglevel;
+
 static
-void init_object(struct object_data *data)
+void init_object(struct lttng_ust_object_data *data)
 {
        data->handle = -1;
        data->shm_fd = -1;
@@ -35,7 +37,7 @@ void init_object(struct object_data *data)
        data->memory_map_size = 0;
 }
 
-void release_object(int sock, struct object_data *data)
+void release_object(int sock, struct lttng_ust_object_data *data)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
@@ -53,6 +55,32 @@ void release_object(int sock, struct object_data *data)
        free(data);
 }
 
+/*
+ * Send registration done packet to the application.
+ */
+int ustctl_register_done(int sock)
+{
+       struct ustcomm_ust_msg lum;
+       struct ustcomm_ust_reply lur;
+       int ret;
+
+       DBG("Sending register done command to %d", sock);
+       memset(&lum, 0, sizeof(lum));
+       lum.handle = LTTNG_UST_ROOT_HANDLE;
+       lum.cmd = LTTNG_UST_REGISTER_DONE;
+       ret = ustcomm_send_app_cmd(sock, &lum, &lur);
+       if (ret)
+               return ret;
+       if (lur.ret_code != USTCOMM_OK) {
+               DBG("Return code: %s", ustcomm_get_readable_code(lur.ret_code));
+               goto error;
+       }
+       return 0;
+
+error:
+       return -1;
+}
+
 /*
  * returns session handle.
  */
@@ -77,11 +105,11 @@ int ustctl_create_session(int sock)
 /* open the metadata global channel */
 int ustctl_open_metadata(int sock, int session_handle,
                struct lttng_ust_channel_attr *chops,
-               struct object_data **_metadata_data)
+               struct lttng_ust_object_data **_metadata_data)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
-       struct object_data *metadata_data;
+       struct lttng_ust_object_data *metadata_data;
        int ret;
 
        metadata_data = malloc(sizeof(*metadata_data));
@@ -130,11 +158,11 @@ error:
 
 int ustctl_create_channel(int sock, int session_handle,
                struct lttng_ust_channel_attr *chops,
-               struct object_data **_channel_data)
+               struct lttng_ust_object_data **_channel_data)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
-       struct object_data *channel_data;
+       struct lttng_ust_object_data *channel_data;
        int ret;
 
        channel_data = malloc(sizeof(*channel_data));
@@ -186,12 +214,12 @@ error:
  * Return 0 on success.
  * Return negative error value on error.
  */
-int ustctl_create_stream(int sock, struct object_data *channel_data,
-               struct object_data **_stream_data)
+int ustctl_create_stream(int sock, struct lttng_ust_object_data *channel_data,
+               struct lttng_ust_object_data **_stream_data)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
-       struct object_data *stream_data;
+       struct lttng_ust_object_data *stream_data;
        int ret, fd;
 
        stream_data = malloc(sizeof(*stream_data));
@@ -233,12 +261,12 @@ error:
 }
 
 int ustctl_create_event(int sock, struct lttng_ust_event *ev,
-               struct object_data *channel_data,
-               struct object_data **_event_data)
+               struct lttng_ust_object_data *channel_data,
+               struct lttng_ust_object_data **_event_data)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
-       struct object_data *event_data;
+       struct lttng_ust_object_data *event_data;
        int ret;
 
        event_data = malloc(sizeof(*event_data));
@@ -263,12 +291,12 @@ int ustctl_create_event(int sock, struct lttng_ust_event *ev,
 }
 
 int ustctl_add_context(int sock, struct lttng_ust_context *ctx,
-               struct object_data *channel_data,
-               struct object_data **_context_data)
+               struct lttng_ust_object_data *obj_data,
+               struct lttng_ust_object_data **_context_data)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
-       struct object_data *context_data;
+       struct lttng_ust_object_data *context_data;
        int ret;
 
        context_data = malloc(sizeof(*context_data));
@@ -276,7 +304,7 @@ int ustctl_add_context(int sock, struct lttng_ust_context *ctx,
                return -ENOMEM;
        init_object(context_data);
        memset(&lum, 0, sizeof(lum));
-       lum.handle = channel_data->handle;
+       lum.handle = obj_data->handle;
        lum.cmd = LTTNG_UST_CONTEXT;
        lum.u.context.ctx = ctx->ctx;
        ret = ustcomm_send_app_cmd(sock, &lum, &lur);
@@ -291,7 +319,7 @@ int ustctl_add_context(int sock, struct lttng_ust_context *ctx,
 }
 
 /* Enable event, channel and session ioctl */
-int ustctl_enable(int sock, struct object_data *object)
+int ustctl_enable(int sock, struct lttng_ust_object_data *object)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
@@ -308,7 +336,7 @@ int ustctl_enable(int sock, struct object_data *object)
 }
 
 /* Disable event, channel and session ioctl */
-int ustctl_disable(int sock, struct object_data *object)
+int ustctl_disable(int sock, struct lttng_ust_object_data *object)
 {
        struct ustcomm_ust_msg lum;
        struct ustcomm_ust_reply lur;
@@ -324,14 +352,20 @@ int ustctl_disable(int sock, struct object_data *object)
        return 0;
 }
 
-int ustctl_start_session(int sock, struct object_data *object)
+int ustctl_start_session(int sock, int handle)
 {
-       return ustctl_enable(sock, object);
+       struct lttng_ust_object_data obj;
+
+       obj.handle = handle;
+       return ustctl_enable(sock, &obj);
 }
 
-int ustctl_stop_session(int sock, struct object_data *object)
+int ustctl_stop_session(int sock, int handle)
 {
-       return ustctl_disable(sock, object);
+       struct lttng_ust_object_data obj;
+
+       obj.handle = handle;
+       return ustctl_disable(sock, &obj);
 }
 
 
@@ -373,6 +407,17 @@ int ustctl_wait_quiescent(int sock)
        return 0;
 }
 
+int ustctl_flush_buffer(int sock, struct lttng_ust_object_data *channel_data)
+{
+       struct ustcomm_ust_msg lum;
+       struct ustcomm_ust_reply lur;
+
+       memset(&lum, 0, sizeof(lum));
+       lum.handle = channel_data->handle;
+       lum.cmd = LTTNG_UST_FLUSH_BUFFER;
+       return ustcomm_send_app_cmd(sock, &lum, &lur);
+}
+
 int ustctl_calibrate(int sock, struct lttng_ust_calibrate *calibrate)
 {
        return -ENOSYS;
@@ -381,9 +426,9 @@ int ustctl_calibrate(int sock, struct lttng_ust_calibrate *calibrate)
 /* Buffer operations */
 
 /* Map channel shm into process memory */
-struct shm_handle *ustctl_map_channel(struct object_data *chan_data)
+struct lttng_ust_shm_handle *ustctl_map_channel(struct lttng_ust_object_data *chan_data)
 {
-       struct shm_handle *handle;
+       struct lttng_ust_shm_handle *handle;
        struct channel *chan;
        size_t chan_size;
 
@@ -395,7 +440,7 @@ struct shm_handle *ustctl_map_channel(struct object_data *chan_data)
                return NULL;
        }
        /*
-        * Set to -1 because the shm_handle destruction will take care
+        * Set to -1 because the lttng_ust_shm_handle destruction will take care
         * of closing shm_fd and wait_fd.
         */
        chan_data->shm_fd = -1;
@@ -419,8 +464,8 @@ struct shm_handle *ustctl_map_channel(struct object_data *chan_data)
 }
 
 /* Add stream to channel shm and map its shm into process memory */
-int ustctl_add_stream(struct shm_handle *handle,
-               struct object_data *stream_data)
+int ustctl_add_stream(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_object_data *stream_data)
 {
        int ret;
 
@@ -436,7 +481,7 @@ int ustctl_add_stream(struct shm_handle *handle,
                return ret;
        }
        /*
-        * Set to -1 because the shm_handle destruction will take care
+        * Set to -1 because the lttng_ust_shm_handle destruction will take care
         * of closing shm_fd and wait_fd.
         */
        stream_data->shm_fd = -1;
@@ -444,7 +489,7 @@ int ustctl_add_stream(struct shm_handle *handle,
        return 0;
 }
 
-void ustctl_unmap_channel(struct shm_handle *handle)
+void ustctl_unmap_channel(struct lttng_ust_shm_handle *handle)
 {
        struct channel *chan;
 
@@ -452,13 +497,13 @@ void ustctl_unmap_channel(struct shm_handle *handle)
        channel_destroy(chan, handle, 1);
 }
 
-struct lib_ring_buffer *ustctl_open_stream_read(struct shm_handle *handle,
+struct lttng_ust_lib_ring_buffer *ustctl_open_stream_read(struct lttng_ust_shm_handle *handle,
        int cpu)
 {
        struct channel *chan = handle->shadow_chan;
        int shm_fd, wait_fd;
        uint64_t memory_map_size;
-       struct lib_ring_buffer *buf;
+       struct lttng_ust_lib_ring_buffer *buf;
        int ret;
 
        buf = channel_get_ring_buffer(&chan->backend.config,
@@ -471,23 +516,23 @@ struct lib_ring_buffer *ustctl_open_stream_read(struct shm_handle *handle,
        return buf;
 }
 
-void ustctl_close_stream_read(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+void ustctl_close_stream_read(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        lib_ring_buffer_release_read(buf, handle, 1);
 }
 
 /* For mmap mode, readable without "get" operation */
 
-void *ustctl_get_mmap_base(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+void *ustctl_get_mmap_base(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        return shmp(handle, buf->backend.memory_map);
 }
 
 /* returns the length to mmap. */
-int ustctl_get_mmap_len(struct shm_handle *handle,
-               struct lib_ring_buffer *buf,
+int ustctl_get_mmap_len(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf,
                unsigned long *len)
 {
        unsigned long mmap_buf_len;
@@ -505,8 +550,8 @@ int ustctl_get_mmap_len(struct shm_handle *handle,
 }
 
 /* returns the maximum size for sub-buffers. */
-int ustctl_get_max_subbuf_size(struct shm_handle *handle,
-               struct lib_ring_buffer *buf,
+int ustctl_get_max_subbuf_size(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf,
                unsigned long *len)
 {
        struct channel *chan = handle->shadow_chan;
@@ -521,8 +566,8 @@ int ustctl_get_max_subbuf_size(struct shm_handle *handle,
  */
 
 /* returns the offset of the subbuffer belonging to the mmap reader. */
-int ustctl_get_mmap_read_offset(struct shm_handle *handle,
-               struct lib_ring_buffer *buf, unsigned long *off)
+int ustctl_get_mmap_read_offset(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf, unsigned long *off)
 {
        struct channel *chan = handle->shadow_chan;
        unsigned long sb_bindex;
@@ -536,8 +581,8 @@ int ustctl_get_mmap_read_offset(struct shm_handle *handle,
 }
 
 /* returns the size of the current sub-buffer, without padding (for mmap). */
-int ustctl_get_subbuf_size(struct shm_handle *handle,
-               struct lib_ring_buffer *buf, unsigned long *len)
+int ustctl_get_subbuf_size(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf, unsigned long *len)
 {
        struct channel *chan = handle->shadow_chan;
 
@@ -547,8 +592,8 @@ int ustctl_get_subbuf_size(struct shm_handle *handle,
 }
 
 /* returns the size of the current sub-buffer, without padding (for mmap). */
-int ustctl_get_padded_subbuf_size(struct shm_handle *handle,
-               struct lib_ring_buffer *buf, unsigned long *len)
+int ustctl_get_padded_subbuf_size(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf, unsigned long *len)
 {
        struct channel *chan = handle->shadow_chan;
 
@@ -559,16 +604,16 @@ int ustctl_get_padded_subbuf_size(struct shm_handle *handle,
 }
 
 /* Get exclusive read access to the next sub-buffer that can be read. */
-int ustctl_get_next_subbuf(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+int ustctl_get_next_subbuf(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        return lib_ring_buffer_get_next_subbuf(buf, handle);
 }
 
 
 /* Release exclusive sub-buffer access, move consumer forward. */
-int ustctl_put_next_subbuf(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+int ustctl_put_next_subbuf(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        lib_ring_buffer_put_next_subbuf(buf, handle);
        return 0;
@@ -577,46 +622,46 @@ int ustctl_put_next_subbuf(struct shm_handle *handle,
 /* snapshot */
 
 /* Get a snapshot of the current ring buffer producer and consumer positions */
-int ustctl_snapshot(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+int ustctl_snapshot(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        return lib_ring_buffer_snapshot(buf, &buf->cons_snapshot,
                        &buf->prod_snapshot, handle);
 }
 
 /* Get the consumer position (iteration start) */
-int ustctl_snapshot_get_consumed(struct shm_handle *handle,
-               struct lib_ring_buffer *buf, unsigned long *pos)
+int ustctl_snapshot_get_consumed(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf, unsigned long *pos)
 {
        *pos = buf->cons_snapshot;
        return 0;
 }
 
 /* Get the producer position (iteration end) */
-int ustctl_snapshot_get_produced(struct shm_handle *handle,
-               struct lib_ring_buffer *buf, unsigned long *pos)
+int ustctl_snapshot_get_produced(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf, unsigned long *pos)
 {
        *pos = buf->prod_snapshot;
        return 0;
 }
 
 /* Get exclusive read access to the specified sub-buffer position */
-int ustctl_get_subbuf(struct shm_handle *handle,
-               struct lib_ring_buffer *buf, unsigned long *pos)
+int ustctl_get_subbuf(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf, unsigned long *pos)
 {
        return lib_ring_buffer_get_subbuf(buf, *pos, handle);
 }
 
 /* Release exclusive sub-buffer access */
-int ustctl_put_subbuf(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+int ustctl_put_subbuf(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        lib_ring_buffer_put_subbuf(buf, handle);
        return 0;
 }
 
-int ustctl_buffer_flush(struct shm_handle *handle,
-               struct lib_ring_buffer *buf)
+int ustctl_buffer_flush(struct lttng_ust_shm_handle *handle,
+               struct lttng_ust_lib_ring_buffer *buf)
 {
        lib_ring_buffer_switch_slow(buf, SWITCH_ACTIVE, handle);
        return 0;
This page took 0.031107 seconds and 4 git commands to generate.