summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/buffering.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/apps/buffering.c b/apps/buffering.c
index 9bc7d730c5..4b6a9d7f73 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -132,6 +132,9 @@ static struct mutex llist_mutex SHAREDBSS_ATTR;
132#define HLIST_LAST \ 132#define HLIST_LAST \
133 HLIST_HANDLE(handle_list.tail) 133 HLIST_HANDLE(handle_list.tail)
134 134
135#define HLIST_PREV(h) \
136 HLIST_HANDLE((h)->hnode.prev)
137
135#define HLIST_NEXT(h) \ 138#define HLIST_NEXT(h) \
136 HLIST_HANDLE((h)->hnode.next) 139 HLIST_HANDLE((h)->hnode.next)
137 140
@@ -1583,21 +1586,16 @@ size_t buf_get_watermark(void)
1583} 1586}
1584 1587
1585/** -- buffer thread helpers -- **/ 1588/** -- buffer thread helpers -- **/
1586static void shrink_buffer_inner(struct memory_handle *h)
1587{
1588 if (h == NULL)
1589 return;
1590
1591 shrink_buffer_inner(HLIST_NEXT(h));
1592
1593 shrink_handle(h);
1594}
1595
1596static void shrink_buffer(void) 1589static void shrink_buffer(void)
1597{ 1590{
1598 logf("shrink_buffer()"); 1591 logf("shrink_buffer()");
1592
1599 mutex_lock(&llist_mutex); 1593 mutex_lock(&llist_mutex);
1600 shrink_buffer_inner(HLIST_FIRST); 1594
1595 for (struct memory_handle *h = HLIST_LAST; h; h = HLIST_PREV(h)) {
1596 shrink_handle(h);
1597 }
1598
1601 mutex_unlock(&llist_mutex); 1599 mutex_unlock(&llist_mutex);
1602} 1600}
1603 1601