From 6957c199926b3ad41b18ffd460993a034099b66b Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Thu, 9 Sep 2021 08:39:51 +0800 Subject: [PATCH] fast_mblock.[hc]: add function fast_mblock_free_objects --- HISTORY | 2 +- src/fast_mblock.c | 24 ++++++++++++++++++++++++ src/fast_mblock.h | 3 +++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/HISTORY b/HISTORY index adb90ce..fd1d280 100644 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,5 @@ -Version 1.54 2021-09-02 +Version 1.54 2021-09-09 * fast_allocator.[hc]: correct reclaim_interval logic * shared_func.[hc]: add functions getFileContentEx1 and getFileContent1 * fc_queue.[hc]: add function fc_queue_timedpeek diff --git a/src/fast_mblock.c b/src/fast_mblock.c index 197d0a3..ab05200 100644 --- a/src/fast_mblock.c +++ b/src/fast_mblock.c @@ -858,6 +858,30 @@ int fast_mblock_batch_free(struct fast_mblock_man *mblock, return 0; } +void fast_mblock_free_objects(struct fast_mblock_man *mblock, + void **objs, const int count) +{ + void **obj; + void **end; + struct fast_mblock_node *previous; + struct fast_mblock_chain chain; + + if (count == 0) { + return; + } + + chain.head = previous = fast_mblock_to_node_ptr(objs[0]); + end = objs + count; + for (obj=objs+1; objnext = *obj; + previous = *obj; + } + + previous->next = NULL; + chain.tail = fast_mblock_to_node_ptr(previous); + fast_mblock_batch_free(mblock, &chain); +} + int fast_mblock_delay_free(struct fast_mblock_man *mblock, struct fast_mblock_node *pNode, const int deley) { diff --git a/src/fast_mblock.h b/src/fast_mblock.h index 54787b2..fac9720 100644 --- a/src/fast_mblock.h +++ b/src/fast_mblock.h @@ -304,6 +304,9 @@ static inline int fast_mblock_free_object(struct fast_mblock_man *mblock, return fast_mblock_free(mblock, fast_mblock_to_node_ptr(object)); } +void fast_mblock_free_objects(struct fast_mblock_man *mblock, + void **objs, const int count); + /** delay free a object (put a node to the mblock) parameters: