aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/itc.c14
-rw-r--r--src/itc.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/src/itc.c b/src/itc.c
index 6171d4e..5b6fee9 100644
--- a/src/itc.c
+++ b/src/itc.c
@@ -87,6 +87,20 @@ int itc_inject(itc *ctx, int timeout_ms, void *element)
return 0;
}
+void itc_flush(itc *ctx)
+{
+ int i;
+
+ if (ctx == NULL) {
+ return;
+ }
+
+ for (i = 0; i < ctx->nslots; i++) {
+ sem_wait(&ctx->emptied);
+ sem_post(&ctx->emptied);
+ }
+}
+
void itc_drop(itc *ctx, itc_free_element free_element)
{
void *element;
diff --git a/src/itc.h b/src/itc.h
index 0d43e3d..01a0564 100644
--- a/src/itc.h
+++ b/src/itc.h
@@ -9,6 +9,7 @@ void itc_free(itc **ctx, itc_free_element free_element);
void *itc_retrive(itc *ctx, int timeout_ms);
int itc_inject(itc *ctx, int timeout_ms, void *element);
+void itc_flush(itc *ctx);
void itc_drop(itc *ctx, itc_free_element free_element);
#endif //__LIBTUBERIA_ITC_H__