From bcd00f407913029de38232ca3af36c0ee6dbe609 Mon Sep 17 00:00:00 2001 From: yuqing Date: Mon, 15 Jun 2015 20:33:14 +0800 Subject: [PATCH] fast_mblock suport alloc and free object --- HISTORY | 7 +++++-- libfastcommon.spec | 2 +- src/fast_mblock.h | 34 ++++++++++++++++++++++++++++++++-- 3 files changed, 38 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index 6dbe49b..656237c 100644 --- a/HISTORY +++ b/HISTORY @@ -1,4 +1,9 @@ +Version 1.15 2015-06-15 + * fast_mblock.c support none lock + * ioevent support set timeout + * fast_mblock suport alloc and free object + Version 1.14 2015-06-12 * fast_task_info support set_buffer_size and realloc_buffer * use file lock when write logger header @@ -6,8 +11,6 @@ Version 1.14 2015-06-12 * macro FDFS_WRITE_BUFF_SIZE change to FAST_WRITE_BUFF_SIZE * logger.c call log_check_rotate in lock * bug fixed: log header correctly when rotate - * fast_mblock.c support none lock - * ioevent support set timeout Version 1.13 2015-02-27 * support php extension diff --git a/libfastcommon.spec b/libfastcommon.spec index 4f6a34c..a6c717f 100644 --- a/libfastcommon.spec +++ b/libfastcommon.spec @@ -1,5 +1,5 @@ Name: libfastcommon -Version: 1.0.14 +Version: 1.0.15 Release: 1%{?dist} Summary: c common functions library extracted from my open source projects FastDFS License: GPL diff --git a/src/fast_mblock.h b/src/fast_mblock.h index 2029540..d880ba5 100644 --- a/src/fast_mblock.h +++ b/src/fast_mblock.h @@ -88,11 +88,41 @@ free a node (put a node to the mblock) parameters: mblock: the mblock pointer pNode: the node to free -return the alloced node, return NULL if fail +return 0 for success, return none zero if fail */ -int fast_mblock_free(struct fast_mblock_man *mblock, \ +int fast_mblock_free(struct fast_mblock_man *mblock, struct fast_mblock_node *pNode); +/** +alloc a object from the mblock +parameters: + mblock: the mblock pointer +return the alloced object, return NULL if fail +*/ +static inline void *fast_mblock_alloc_object(struct fast_mblock_man *mblock) +{ + struct fast_mblock_node *node; + node = fast_mblock_alloc(mblock); + if (node == NULL) + { + return NULL; + } + return node->data; +} + +/** +free a object (put the object to the mblock) +parameters: + mblock: the mblock pointer + object: the object to free +return 0 for success, return none zero if fail +*/ +static inline int fast_mblock_free_object(struct fast_mblock_man *mblock, + void *object) +{ + return fast_mblock_free(mblock, fast_mblock_to_node_ptr(object)); +} + /** get node count of the mblock parameters: