projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Introduce LTTNG_UST_ALLOW_BLOCKING env. var.
[lttng-ust.git]
/
libringbuffer
/
ring_buffer_frontend.c
diff --git
a/libringbuffer/ring_buffer_frontend.c
b/libringbuffer/ring_buffer_frontend.c
index 76d6ec746c40ade48905bcfbf0cd3c81274d812e..331639f1e86826b2c67d186dfa8d0907df70f0d8 100644
(file)
--- a/
libringbuffer/ring_buffer_frontend.c
+++ b/
libringbuffer/ring_buffer_frontend.c
@@
-151,12
+151,19
@@
static struct timer_signal_data timer_signal = {
.lock = PTHREAD_MUTEX_INITIALIZER,
};
.lock = PTHREAD_MUTEX_INITIALIZER,
};
-int lttng_ust_blocking_retry_timeout =
- CONFIG_LTTNG_UST_DEFAULT_BLOCKING_RETRY_TIMEOUT_MS;
+static bool lttng_ust_allow_blocking;
-void lttng_ust_ringbuffer_set_
retry_timeout(int timeout
)
+void lttng_ust_ringbuffer_set_
allow_blocking(void
)
{
{
- lttng_ust_blocking_retry_timeout = timeout;
+ lttng_ust_allow_blocking = true;
+}
+
+/* Get blocking timeout, in ms */
+static int lttng_ust_ringbuffer_get_timeout(struct channel *chan)
+{
+ if (!lttng_ust_allow_blocking)
+ return 0;
+ return chan->u.s.blocking_timeout_ms;
}
/**
}
/**
@@
-951,7
+958,8
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
void *buf_addr, size_t subbuf_size,
size_t num_subbuf, unsigned int switch_timer_interval,
unsigned int read_timer_interval,
void *buf_addr, size_t subbuf_size,
size_t num_subbuf, unsigned int switch_timer_interval,
unsigned int read_timer_interval,
- const int *stream_fds, int nr_stream_fds)
+ const int *stream_fds, int nr_stream_fds,
+ int64_t blocking_timeout)
{
int ret;
size_t shmsize, chansize;
{
int ret;
size_t shmsize, chansize;
@@
-959,6
+967,7
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
struct lttng_ust_shm_handle *handle;
struct shm_object *shmobj;
unsigned int nr_streams;
struct lttng_ust_shm_handle *handle;
struct shm_object *shmobj;
unsigned int nr_streams;
+ int64_t blocking_timeout_ms;
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
nr_streams = num_possible_cpus();
if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
nr_streams = num_possible_cpus();
@@
-968,6
+977,19
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
if (nr_stream_fds != nr_streams)
return NULL;
if (nr_stream_fds != nr_streams)
return NULL;
+ if (blocking_timeout < -1) {
+ return NULL;
+ }
+ /* usec to msec */
+ if (blocking_timeout == -1) {
+ blocking_timeout_ms = -1;
+ } else {
+ blocking_timeout_ms = blocking_timeout / 1000;
+ if (blocking_timeout_ms != (int32_t) blocking_timeout_ms) {
+ return NULL;
+ }
+ }
+
if (lib_ring_buffer_check_config(config, switch_timer_interval,
read_timer_interval))
return NULL;
if (lib_ring_buffer_check_config(config, switch_timer_interval,
read_timer_interval))
return NULL;
@@
-1021,6
+1043,8
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
*priv_data = NULL;
}
*priv_data = NULL;
}
+ chan->u.s.blocking_timeout_ms = (int32_t) blocking_timeout_ms;
+
ret = channel_backend_init(&chan->backend, name, config,
subbuf_size, num_subbuf, handle,
stream_fds);
ret = channel_backend_init(&chan->backend, name, config,
subbuf_size, num_subbuf, handle,
stream_fds);
@@
-2066,7
+2090,7
@@
int lib_ring_buffer_try_reserve_slow(struct lttng_ust_lib_ring_buffer *buf,
const struct lttng_ust_lib_ring_buffer_config *config = &chan->backend.config;
struct lttng_ust_shm_handle *handle = ctx->handle;
unsigned long reserve_commit_diff, offset_cmp;
const struct lttng_ust_lib_ring_buffer_config *config = &chan->backend.config;
struct lttng_ust_shm_handle *handle = ctx->handle;
unsigned long reserve_commit_diff, offset_cmp;
- int timeout_left_ms = lttng_ust_
blocking_retry_timeout
;
+ int timeout_left_ms = lttng_ust_
ringbuffer_get_timeout(chan)
;
retry:
offsets->begin = offset_cmp = v_read(config, &buf->offset);
retry:
offsets->begin = offset_cmp = v_read(config, &buf->offset);
This page took
0.024164 seconds
and
4
git commands to generate.