Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
阿啄debugIT
libfastcommon
提交
6db41264
L
libfastcommon
项目概览
阿啄debugIT
/
libfastcommon
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
libfastcommon
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6db41264
编写于
10月 26, 2014
作者:
Y
yuqing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mblock support alloc_init_func
上级
503cdc60
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
6 deletion
+34
-6
HISTORY
HISTORY
+2
-1
src/fast_mblock.c
src/fast_mblock.c
+24
-3
src/fast_mblock.h
src/fast_mblock.h
+8
-2
未找到文件。
HISTORY
浏览文件 @
6db41264
Version 1.09 2014-10-2
4
Version 1.09 2014-10-2
6
* Version struct add variable: patch
* get local ipaddr support interface based 1
* mblock support alloc_init_func
Version 1.08 2014-10-09
* sched_thread.c: calculate next_call_time correctly
...
...
src/fast_mblock.c
浏览文件 @
6db41264
...
...
@@ -9,8 +9,8 @@
#include "shared_func.h"
#include "pthread_func.h"
int
fast_mblock_init
(
struct
fast_mblock_man
*
mblock
,
const
int
element_size
,
\
const
int
alloc_elements_once
)
int
fast_mblock_init
_ex
(
struct
fast_mblock_man
*
mblock
,
const
int
element_size
,
const
int
alloc_elements_once
,
fast_mblock_alloc_init_func
init_func
)
{
int
result
;
...
...
@@ -43,6 +43,7 @@ int fast_mblock_init(struct fast_mblock_man *mblock, const int element_size, \
return
result
;
}
mblock
->
alloc_init_func
=
init_func
;
mblock
->
malloc_chain_head
=
NULL
;
mblock
->
free_chain_head
=
NULL
;
mblock
->
total_count
=
0
;
...
...
@@ -58,6 +59,7 @@ static int fast_mblock_prealloc(struct fast_mblock_man *mblock)
char
*
pTrunkStart
;
char
*
p
;
char
*
pLast
;
int
result
;
int
block_size
;
int
alloc_size
;
...
...
@@ -84,9 +86,28 @@ static int fast_mblock_prealloc(struct fast_mblock_man *mblock)
for
(
p
=
pTrunkStart
;
p
<
pLast
;
p
+=
block_size
)
{
pNode
=
(
struct
fast_mblock_node
*
)
p
;
if
(
mblock
->
alloc_init_func
!=
NULL
)
{
if
((
result
=
mblock
->
alloc_init_func
(
pNode
->
data
))
!=
0
)
{
free
(
pNew
);
return
result
;
}
}
pNode
->
next
=
(
struct
fast_mblock_node
*
)(
p
+
block_size
);
}
((
struct
fast_mblock_node
*
)
pLast
)
->
next
=
NULL
;
if
(
mblock
->
alloc_init_func
!=
NULL
)
{
if
((
result
=
mblock
->
alloc_init_func
(((
struct
fast_mblock_node
*
)
pLast
)
->
data
))
!=
0
)
{
free
(
pNew
);
return
result
;
}
}
((
struct
fast_mblock_node
*
)
pLast
)
->
next
=
NULL
;
mblock
->
free_chain_head
=
(
struct
fast_mblock_node
*
)
pTrunkStart
;
pMallocNode
->
next
=
mblock
->
malloc_chain_head
;
...
...
src/fast_mblock.h
浏览文件 @
6db41264
...
...
@@ -31,10 +31,13 @@ struct fast_mblock_malloc
struct
fast_mblock_malloc
*
next
;
};
typedef
int
(
*
fast_mblock_alloc_init_func
)(
void
*
element
);
struct
fast_mblock_man
{
struct
fast_mblock_node
*
free_chain_head
;
//free node chain
struct
fast_mblock_malloc
*
malloc_chain_head
;
//malloc chain to be freed
fast_mblock_alloc_init_func
alloc_init_func
;
int
element_size
;
//element size
int
alloc_elements_once
;
//alloc elements once
int
total_count
;
//total element count
...
...
@@ -49,6 +52,9 @@ struct fast_mblock_man
extern
"C"
{
#endif
#define fast_mblock_init(mblock, element_size, alloc_elements_once) \
fast_mblock_init_ex(mblock, element_size, alloc_elements_once, NULL)
/**
mblock init
parameters:
...
...
@@ -57,8 +63,8 @@ parameters:
alloc_elements_once: malloc elements once, 0 for malloc 1MB once
return error no, 0 for success, != 0 fail
*/
int
fast_mblock_init
(
struct
fast_mblock_man
*
mblock
,
const
int
element_size
,
\
const
int
alloc_elements_once
);
int
fast_mblock_init
_ex
(
struct
fast_mblock_man
*
mblock
,
const
int
element_size
,
const
int
alloc_elements_once
,
fast_mblock_alloc_init_func
init_func
);
/**
mblock destroy
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录