projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: Correctly handle the command to disable all events
[lttng-ust.git]
/
liblttng-ust-ctl
/
ustctl.c
diff --git
a/liblttng-ust-ctl/ustctl.c
b/liblttng-ust-ctl/ustctl.c
index 00d9802ee300a1dfc391e08d3f3e9f1cba0e398f..5801bc6b4b78e6b8c6b837d44755c79f1264f348 100644
(file)
--- a/
liblttng-ust-ctl/ustctl.c
+++ b/
liblttng-ust-ctl/ustctl.c
@@
-32,6
+32,7
@@
#include "../libringbuffer/frontend.h"
#include "../liblttng-ust/wait.h"
#include "../liblttng-ust/lttng-rb-clients.h"
#include "../libringbuffer/frontend.h"
#include "../liblttng-ust/wait.h"
#include "../liblttng-ust/lttng-rb-clients.h"
+#include "../liblttng-ust/clock.h"
/*
* Number of milliseconds to retry before failing metadata writes on
/*
* Number of milliseconds to retry before failing metadata writes on
@@
-230,7
+231,7
@@
int ustctl_add_context(int sock, struct lttng_ust_context *ctx,
memset(&lum, 0, sizeof(lum));
lum.handle = obj_data->handle;
lum.cmd = LTTNG_UST_CONTEXT;
memset(&lum, 0, sizeof(lum));
lum.handle = obj_data->handle;
lum.cmd = LTTNG_UST_CONTEXT;
- lum.u.context
.ctx = ctx->
ctx;
+ lum.u.context
= *
ctx;
ret = ustcomm_send_app_cmd(sock, &lum, &lur);
if (ret) {
free(context_data);
ret = ustcomm_send_app_cmd(sock, &lum, &lur);
if (ret) {
free(context_data);
@@
-294,7
+295,7
@@
int ustctl_set_exclusion(int sock, struct lttng_ust_event_exclusion *exclusion,
return ret;
}
return ret;
}
- /* send var len
bytecode
*/
+ /* send var len
exclusion names
*/
ret = ustcomm_send_unix_sock(sock,
exclusion->names,
exclusion->count * LTTNG_UST_SYM_NAME_LEN);
ret = ustcomm_send_unix_sock(sock,
exclusion->names,
exclusion->count * LTTNG_UST_SYM_NAME_LEN);
@@
-942,8
+943,14
@@
error:
/* Buffer operations */
/* Buffer operations */
+int ustctl_get_nr_stream_per_channel(void)
+{
+ return num_possible_cpus();
+}
+
struct ustctl_consumer_channel *
struct ustctl_consumer_channel *
- ustctl_create_channel(struct ustctl_consumer_channel_attr *attr)
+ ustctl_create_channel(struct ustctl_consumer_channel_attr *attr,
+ const int *stream_fds, int nr_stream_fds)
{
struct ustctl_consumer_channel *chan;
const char *transport_name;
{
struct ustctl_consumer_channel *chan;
const char *transport_name;
@@
-995,7
+1002,8
@@
struct ustctl_consumer_channel *
attr->subbuf_size, attr->num_subbuf,
attr->switch_timer_interval,
attr->read_timer_interval,
attr->subbuf_size, attr->num_subbuf,
attr->switch_timer_interval,
attr->read_timer_interval,
- attr->uuid, attr->chan_id);
+ attr->uuid, attr->chan_id,
+ stream_fds, nr_stream_fds);
if (!chan->chan) {
goto chan_error;
}
if (!chan->chan) {
goto chan_error;
}
@@
-1012,6
+1020,8
@@
chan_error:
void ustctl_destroy_channel(struct ustctl_consumer_channel *chan)
{
void ustctl_destroy_channel(struct ustctl_consumer_channel *chan)
{
+ (void) ustctl_channel_close_wait_fd(chan);
+ (void) ustctl_channel_close_wakeup_fd(chan);
chan->chan->ops->channel_destroy(chan->chan);
free(chan);
}
chan->chan->ops->channel_destroy(chan->chan);
free(chan);
}
@@
-1220,6
+1230,8
@@
void ustctl_destroy_stream(struct ustctl_consumer_stream *stream)
assert(stream);
buf = stream->buf;
consumer_chan = stream->chan;
assert(stream);
buf = stream->buf;
consumer_chan = stream->chan;
+ (void) ustctl_stream_close_wait_fd(stream);
+ (void) ustctl_stream_close_wakeup_fd(stream);
lib_ring_buffer_release_read(buf, consumer_chan->chan->handle);
free(stream);
}
lib_ring_buffer_release_read(buf, consumer_chan->chan->handle);
free(stream);
}
@@
-1519,11
+1531,13
@@
int ustctl_get_timestamp_begin(struct ustctl_consumer_stream *stream,
uint64_t *timestamp_begin)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *timestamp_begin)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !timestamp_begin)
return -EINVAL;
if (!stream || !timestamp_begin)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
@@
-1534,11
+1548,13
@@
int ustctl_get_timestamp_end(struct ustctl_consumer_stream *stream,
uint64_t *timestamp_end)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *timestamp_end)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !timestamp_end)
return -EINVAL;
if (!stream || !timestamp_end)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
@@
-1549,11
+1565,13
@@
int ustctl_get_events_discarded(struct ustctl_consumer_stream *stream,
uint64_t *events_discarded)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *events_discarded)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !events_discarded)
return -EINVAL;
if (!stream || !events_discarded)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
@@
-1564,11
+1582,13
@@
int ustctl_get_content_size(struct ustctl_consumer_stream *stream,
uint64_t *content_size)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *content_size)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !content_size)
return -EINVAL;
if (!stream || !content_size)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
@@
-1579,11
+1599,13
@@
int ustctl_get_packet_size(struct ustctl_consumer_stream *stream,
uint64_t *packet_size)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *packet_size)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !packet_size)
return -EINVAL;
if (!stream || !packet_size)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
@@
-1594,11
+1616,13
@@
int ustctl_get_stream_id(struct ustctl_consumer_stream *stream,
uint64_t *stream_id)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *stream_id)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !stream_id)
return -EINVAL;
if (!stream || !stream_id)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
client_cb = get_client_cb(buf, handle);
if (!client_cb)
return -ENOSYS;
@@
-1609,17
+1633,35
@@
int ustctl_get_current_timestamp(struct ustctl_consumer_stream *stream,
uint64_t *ts)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
uint64_t *ts)
{
struct lttng_ust_client_lib_ring_buffer_client_cb *client_cb;
- struct lttng_ust_lib_ring_buffer *buf
= stream->buf
;
- struct lttng_ust_shm_handle *handle
= stream->chan->chan->handle
;
+ struct lttng_ust_lib_ring_buffer *buf;
+ struct lttng_ust_shm_handle *handle;
if (!stream || !ts)
return -EINVAL;
if (!stream || !ts)
return -EINVAL;
+ buf = stream->buf;
+ handle = stream->chan->chan->handle;
client_cb = get_client_cb(buf, handle);
if (!client_cb || !client_cb->current_timestamp)
return -ENOSYS;
return client_cb->current_timestamp(buf, handle, ts);
}
client_cb = get_client_cb(buf, handle);
if (!client_cb || !client_cb->current_timestamp)
return -ENOSYS;
return client_cb->current_timestamp(buf, handle, ts);
}
+#if defined(__x86_64__) || defined(__i386__)
+
+int ustctl_has_perf_counters(void)
+{
+ return 1;
+}
+
+#else
+
+int ustctl_has_perf_counters(void)
+{
+ return 0;
+}
+
+#endif
+
/*
* Returns 0 on success, negative error value on error.
*/
/*
* Returns 0 on success, negative error value on error.
*/
@@
-1962,6
+2004,7
@@
static __attribute__((constructor))
void ustctl_init(void)
{
init_usterr();
void ustctl_init(void)
{
init_usterr();
+ lttng_ust_clock_init();
lttng_ring_buffer_metadata_client_init();
lttng_ring_buffer_client_overwrite_init();
lttng_ring_buffer_client_overwrite_rt_init();
lttng_ring_buffer_metadata_client_init();
lttng_ring_buffer_client_overwrite_init();
lttng_ring_buffer_client_overwrite_rt_init();
This page took
0.026792 seconds
and
4
git commands to generate.