mirror of https://github.com/trapexit/mergerfs.git
committed by
trapexit
4 changed files with 44 additions and 68 deletions
-
31libfuse/include/objpool.hpp
-
25libfuse/lib/fuse.cpp
-
47libfuse/lib/node.cpp
-
9libfuse/lib/node.hpp
@ -1,60 +1,29 @@ |
|||||
#include "node.hpp"
|
#include "node.hpp"
|
||||
|
|
||||
#include "lfmp.h"
|
|
||||
|
#include "objpool.hpp"
|
||||
|
|
||||
static lfmp_t g_NODE_FMP; |
|
||||
|
|
||||
static |
|
||||
__attribute__((constructor)) |
|
||||
void |
|
||||
node_constructor() |
|
||||
{ |
|
||||
lfmp_init(&g_NODE_FMP,sizeof(node_t),256); |
|
||||
} |
|
||||
|
|
||||
static |
|
||||
__attribute__((destructor)) |
|
||||
void |
|
||||
node_destructor() |
|
||||
{ |
|
||||
lfmp_destroy(&g_NODE_FMP); |
|
||||
} |
|
||||
|
static ObjPool<node_t> g_NODE_POOL; |
||||
|
|
||||
node_t* |
node_t* |
||||
node_alloc() |
node_alloc() |
||||
{ |
{ |
||||
return (node_t*)lfmp_calloc(&g_NODE_FMP); |
|
||||
|
return g_NODE_POOL.alloc(); |
||||
} |
} |
||||
|
|
||||
void |
void |
||||
node_free(node_t *node_) |
node_free(node_t *node_) |
||||
{ |
{ |
||||
lfmp_free(&g_NODE_FMP,node_); |
|
||||
} |
|
||||
|
|
||||
int |
|
||||
node_gc1() |
|
||||
{ |
|
||||
return lfmp_gc(&g_NODE_FMP); |
|
||||
|
g_NODE_POOL.free(node_); |
||||
} |
} |
||||
|
|
||||
void |
void |
||||
node_gc() |
node_gc() |
||||
{ |
{ |
||||
int rv; |
|
||||
int fails; |
|
||||
|
|
||||
fails = 0; |
|
||||
do |
|
||||
{ |
|
||||
rv = node_gc1(); |
|
||||
if(rv == 0) |
|
||||
fails++; |
|
||||
} while(rv || (fails < 3)); |
|
||||
|
g_NODE_POOL.gc(); |
||||
} |
} |
||||
|
|
||||
lfmp_t* |
|
||||
node_lfmp() |
|
||||
|
void |
||||
|
node_clear() |
||||
{ |
{ |
||||
return &g_NODE_FMP; |
|
||||
|
g_NODE_POOL.clear(); |
||||
} |
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue