[vlc-devel] [RFC PATCH 1/2] block: add vlc_fifo_TimedWait and vlc_fifo_TimedWaitCond
Thomas Guillem
thomas at gllm.fr
Mon Nov 30 18:00:47 CET 2015
---
include/vlc_block.h | 2 ++
src/libvlccore.sym | 2 ++
src/misc/fifo.c | 14 ++++++++++++++
3 files changed, 18 insertions(+)
diff --git a/include/vlc_block.h b/include/vlc_block.h
index 59d7556..8af45f4 100644
--- a/include/vlc_block.h
+++ b/include/vlc_block.h
@@ -326,6 +326,8 @@ VLC_API void vlc_fifo_Unlock(vlc_fifo_t *);
VLC_API void vlc_fifo_Signal(vlc_fifo_t *);
VLC_API void vlc_fifo_Wait(vlc_fifo_t *);
VLC_API void vlc_fifo_WaitCond(vlc_fifo_t *, vlc_cond_t *);
+VLC_API int vlc_fifo_TimedWait(vlc_fifo_t *, mtime_t);
+VLC_API int vlc_fifo_TimedWaitCond(vlc_fifo_t *, vlc_cond_t *, mtime_t);
VLC_API void vlc_fifo_QueueUnlocked(vlc_fifo_t *, block_t *);
VLC_API block_t *vlc_fifo_DequeueUnlocked(vlc_fifo_t *) VLC_USED;
VLC_API block_t *vlc_fifo_DequeueAllUnlocked(vlc_fifo_t *) VLC_USED;
diff --git a/src/libvlccore.sym b/src/libvlccore.sym
index 95152e8..1985ca6 100644
--- a/src/libvlccore.sym
+++ b/src/libvlccore.sym
@@ -637,6 +637,8 @@ vlc_fifo_Unlock
vlc_fifo_Signal
vlc_fifo_Wait
vlc_fifo_WaitCond
+vlc_fifo_TimedWait
+vlc_fifo_TimedWaitCond
vlc_fifo_QueueUnlocked
vlc_fifo_DequeueUnlocked
vlc_fifo_DequeueAllUnlocked
diff --git a/src/misc/fifo.c b/src/misc/fifo.c
index 789690e..132893e 100644
--- a/src/misc/fifo.c
+++ b/src/misc/fifo.c
@@ -111,6 +111,20 @@ void vlc_fifo_WaitCond(vlc_fifo_t *fifo, vlc_cond_t *condvar)
}
/**
+ * Atomically unlocks the FIFO and waits until one thread signals the FIFO up
+ * to a certain date, then locks the FIFO again. See vlc_fifo_Wait().
+ */
+int vlc_fifo_TimedWait(vlc_fifo_t *fifo, mtime_t deadline)
+{
+ return vlc_fifo_TimedWaitCond(fifo, &fifo->wait, deadline);
+}
+
+int vlc_fifo_TimedWaitCond(vlc_fifo_t *fifo, vlc_cond_t *condvar, mtime_t deadline)
+{
+ return vlc_cond_timedwait(condvar, &fifo->lock, deadline);
+}
+
+/**
* Checks how many blocks are queued in a locked FIFO.
*
* @note This function is not cancellation point.
--
2.1.4
More information about the vlc-devel
mailing list