diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/buffering.c | 20 |
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 -- **/ |
1586 | static 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 | |||
1596 | static void shrink_buffer(void) | 1589 | static 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 | ||