projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
configure.ac: if -> AS_IF()
[lttng-ust.git]
/
libringbuffer
/
ring_buffer_frontend.c
diff --git
a/libringbuffer/ring_buffer_frontend.c
b/libringbuffer/ring_buffer_frontend.c
index 3cba68d4e7ef354b9d9ddd842378459fa975a4d1..53441aa52f08556d70dc26959513213c0d1c47d7 100644
(file)
--- a/
libringbuffer/ring_buffer_frontend.c
+++ b/
libringbuffer/ring_buffer_frontend.c
@@
-164,10
+164,14
@@
static struct timer_signal_data timer_signal = {
void lib_ring_buffer_reset(struct lttng_ust_lib_ring_buffer *buf,
struct lttng_ust_shm_handle *handle)
{
void lib_ring_buffer_reset(struct lttng_ust_lib_ring_buffer *buf,
struct lttng_ust_shm_handle *handle)
{
- struct channel *chan
= shmp(handle, buf->backend.chan)
;
- const struct lttng_ust_lib_ring_buffer_config *config
= &chan->backend.config
;
+ struct channel *chan;
+ const struct lttng_ust_lib_ring_buffer_config *config;
unsigned int i;
unsigned int i;
+ chan = shmp(handle, buf->backend.chan);
+ if (!chan)
+ abort();
+ config = &chan->backend.config;
/*
* Reset iterator first. It will put the subbuffer if it currently holds
* it.
/*
* Reset iterator first. It will put the subbuffer if it currently holds
* it.
@@
-400,6
+404,9
@@
void lib_ring_buffer_channel_switch_timer(int sig, siginfo_t *si, void *uc)
for_each_possible_cpu(cpu) {
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[cpu].shmp);
for_each_possible_cpu(cpu) {
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[cpu].shmp);
+
+ if (!buf)
+ abort();
if (uatomic_read(&buf->active_readers))
lib_ring_buffer_switch_slow(buf, SWITCH_ACTIVE,
chan->handle);
if (uatomic_read(&buf->active_readers))
lib_ring_buffer_switch_slow(buf, SWITCH_ACTIVE,
chan->handle);
@@
-408,6
+415,8
@@
void lib_ring_buffer_channel_switch_timer(int sig, siginfo_t *si, void *uc)
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[0].shmp);
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[0].shmp);
+ if (!buf)
+ abort();
if (uatomic_read(&buf->active_readers))
lib_ring_buffer_switch_slow(buf, SWITCH_ACTIVE,
chan->handle);
if (uatomic_read(&buf->active_readers))
lib_ring_buffer_switch_slow(buf, SWITCH_ACTIVE,
chan->handle);
@@
-435,6
+444,8
@@
void lib_ring_buffer_channel_do_read(struct channel *chan)
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[cpu].shmp);
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[cpu].shmp);
+ if (!buf)
+ abort();
if (uatomic_read(&buf->active_readers)
&& lib_ring_buffer_poll_deliver(config, buf,
chan, handle)) {
if (uatomic_read(&buf->active_readers)
&& lib_ring_buffer_poll_deliver(config, buf,
chan, handle)) {
@@
-445,6
+456,8
@@
void lib_ring_buffer_channel_do_read(struct channel *chan)
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[0].shmp);
struct lttng_ust_lib_ring_buffer *buf =
shmp(handle, chan->backend.buf[0].shmp);
+ if (!buf)
+ abort();
if (uatomic_read(&buf->active_readers)
&& lib_ring_buffer_poll_deliver(config, buf,
chan, handle)) {
if (uatomic_read(&buf->active_readers)
&& lib_ring_buffer_poll_deliver(config, buf,
chan, handle)) {
@@
-629,7
+642,7
@@
void lib_ring_buffer_channel_switch_timer_start(struct channel *chan)
}
its.it_value.tv_sec = chan->switch_timer_interval / 1000000;
}
its.it_value.tv_sec = chan->switch_timer_interval / 1000000;
- its.it_value.tv_nsec =
chan->switch_timer_interval % 1000
000;
+ its.it_value.tv_nsec =
(chan->switch_timer_interval % 1000000) * 1
000;
its.it_interval.tv_sec = its.it_value.tv_sec;
its.it_interval.tv_nsec = its.it_value.tv_nsec;
its.it_interval.tv_sec = its.it_value.tv_sec;
its.it_interval.tv_nsec = its.it_value.tv_nsec;
@@
-683,7
+696,7
@@
void lib_ring_buffer_channel_read_timer_start(struct channel *chan)
}
its.it_value.tv_sec = chan->read_timer_interval / 1000000;
}
its.it_value.tv_sec = chan->read_timer_interval / 1000000;
- its.it_value.tv_nsec =
chan->read_timer_interval % 1000
000;
+ its.it_value.tv_nsec =
(chan->read_timer_interval % 1000000) * 1
000;
its.it_interval.tv_sec = its.it_value.tv_sec;
its.it_interval.tv_nsec = its.it_value.tv_nsec;
its.it_interval.tv_sec = its.it_value.tv_sec;
its.it_interval.tv_nsec = its.it_value.tv_nsec;
@@
-773,7
+786,8
@@
static void channel_free(struct channel *chan,
* padding to let readers get those sub-buffers.
* Used for live streaming.
* @read_timer_interval: Time interval (in us) to wake up pending readers.
* padding to let readers get those sub-buffers.
* Used for live streaming.
* @read_timer_interval: Time interval (in us) to wake up pending readers.
- * @shm_path: Shared memory files path.
+ * @stream_fds: array of stream file descriptors.
+ * @nr_stream_fds: number of file descriptors in array.
*
* Holds cpu hotplug.
* Returns NULL on failure.
*
* Holds cpu hotplug.
* Returns NULL on failure.
@@
-787,7
+801,7
@@
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
char *shm_path
)
+ const
int *stream_fds, int nr_stream_fds
)
{
int ret;
size_t shmsize, chansize;
{
int ret;
size_t shmsize, chansize;
@@
-801,6
+815,9
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
else
nr_streams = 1;
else
nr_streams = 1;
+ if (nr_stream_fds != nr_streams)
+ 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;
@@
-825,7
+842,7
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
/* Allocate normal memory for channel (not shared) */
shmobj = shm_object_table_alloc(handle->table, shmsize, SHM_OBJECT_MEM,
/* Allocate normal memory for channel (not shared) */
shmobj = shm_object_table_alloc(handle->table, shmsize, SHM_OBJECT_MEM,
-
NULL
);
+
-1
);
if (!shmobj)
goto error_append;
/* struct channel is at object 0, offset 0 (hardcoded) */
if (!shmobj)
goto error_append;
/* struct channel is at object 0, offset 0 (hardcoded) */
@@
-856,7
+873,7
@@
struct lttng_ust_shm_handle *channel_create(const struct lttng_ust_lib_ring_buff
ret = channel_backend_init(&chan->backend, name, config,
subbuf_size, num_subbuf, handle,
ret = channel_backend_init(&chan->backend, name, config,
subbuf_size, num_subbuf, handle,
- s
hm_path
);
+ s
tream_fds
);
if (ret)
goto error_backend_init;
if (ret)
goto error_backend_init;
This page took
0.025895 seconds
and
4
git commands to generate.