projects
/
lttng-modules.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Allow trace syscall table override
[lttng-modules.git]
/
lib
/
ringbuffer
/
ring_buffer_frontend.c
diff --git
a/lib/ringbuffer/ring_buffer_frontend.c
b/lib/ringbuffer/ring_buffer_frontend.c
index db33d04cba8dc7ba8f23d4b90ee0658cbe1888c4..3003dd8324458ee62c8e99460b295bc3ab8e481d 100644
(file)
--- a/
lib/ringbuffer/ring_buffer_frontend.c
+++ b/
lib/ringbuffer/ring_buffer_frontend.c
@@
-203,6
+203,7
@@
int lib_ring_buffer_create(struct lib_ring_buffer *buf,
}
init_waitqueue_head(&buf->read_wait);
}
init_waitqueue_head(&buf->read_wait);
+ init_waitqueue_head(&buf->write_wait);
raw_spin_lock_init(&buf->raw_tick_nohz_spinlock);
/*
raw_spin_lock_init(&buf->raw_tick_nohz_spinlock);
/*
@@
-751,8
+752,8
@@
void *channel_destroy(struct channel *chan)
ACCESS_ONCE(chan->finalized) = 1;
wake_up_interruptible(&chan->hp_wait);
wake_up_interruptible(&chan->read_wait);
ACCESS_ONCE(chan->finalized) = 1;
wake_up_interruptible(&chan->hp_wait);
wake_up_interruptible(&chan->read_wait);
- kref_put(&chan->ref, channel_release);
priv = chan->backend.priv;
priv = chan->backend.priv;
+ kref_put(&chan->ref, channel_release);
return priv;
}
EXPORT_SYMBOL_GPL(channel_destroy);
return priv;
}
EXPORT_SYMBOL_GPL(channel_destroy);
@@
-867,6
+868,8
@@
EXPORT_SYMBOL_GPL(lib_ring_buffer_snapshot);
/**
* lib_ring_buffer_put_snapshot - move consumed counter forward
/**
* lib_ring_buffer_put_snapshot - move consumed counter forward
+ *
+ * Should only be called from consumer context.
* @buf: ring buffer
* @consumed_new: new consumed count value
*/
* @buf: ring buffer
* @consumed_new: new consumed count value
*/
@@
-888,6
+891,8
@@
void lib_ring_buffer_move_consumer(struct lib_ring_buffer *buf,
while ((long) consumed - (long) consumed_new < 0)
consumed = atomic_long_cmpxchg(&buf->consumed, consumed,
consumed_new);
while ((long) consumed - (long) consumed_new < 0)
consumed = atomic_long_cmpxchg(&buf->consumed, consumed,
consumed_new);
+ /* Wake-up the metadata producer */
+ wake_up_interruptible(&buf->write_wait);
}
EXPORT_SYMBOL_GPL(lib_ring_buffer_move_consumer);
}
EXPORT_SYMBOL_GPL(lib_ring_buffer_move_consumer);
This page took
0.024649 seconds
and
4
git commands to generate.