version 1.10.6.3, 2012/05/23 12:16:13
|
version 1.10.6.4, 2012/05/23 13:53:00
|
Line 47 SUCH DAMAGE.
|
Line 47 SUCH DAMAGE.
|
|
|
|
|
int io_Debug; |
int io_Debug; |
|
mpool_t *io_mpool; |
|
|
|
|
|
/* Memory management */ |
|
|
|
void *(*io_malloc)(size_t) = malloc; |
|
void *(*io_calloc)(size_t, size_t) = calloc; |
|
void *(*io_realloc)(void*, size_t) = realloc; |
|
char *(*io_strdup)(const char*) = strdup; |
|
void (*io_free)(void*) = free; |
|
|
|
|
#pragma GCC visibility push(hidden) |
#pragma GCC visibility push(hidden) |
|
|
int io_mpool; | int use_mm; |
|
|
int io_Errno; |
int io_Errno; |
char io_Error[STRSIZ]; |
char io_Error[STRSIZ]; |
Line 86 io_SetErr(int eno, char *estr, ...)
|
Line 96 io_SetErr(int eno, char *estr, ...)
|
va_end(lst); |
va_end(lst); |
} |
} |
|
|
// mpool_inuse() Check for mpool usage | // io_mm_inuse() Check for memory management model |
inline int |
inline int |
mpool_inuse() | io_mm_inuse() |
{ |
{ |
return io_mpool; | return use_mm & IO_MPOOL; |
} |
} |
|
|
|
|
Line 99 void
|
Line 109 void
|
_init() |
_init() |
{ |
{ |
#ifdef USE_MPOOL |
#ifdef USE_MPOOL |
io_mpool = 42; | ioLibInit(IO_MPOOL, 0); |
#else |
#else |
io_mpool = 0; | ioLibInit(IO_SYSM, 0); |
#endif |
#endif |
} |
} |
|
|
Line 109 _init()
|
Line 119 _init()
|
void |
void |
_fini() |
_fini() |
{ |
{ |
|
ioLibFini(); |
|
} |
|
|
|
/* |
|
* ioLibInit() - Init libaitio library memory management |
|
* |
|
* @mm = memory management (IO_SYSM or IO_MPOOL) |
|
* @maxmem = memory limit |
|
* return: -1 error or !=-1 used memory management model |
|
*/ |
|
inline int |
|
ioLibInit(int mm, u_long maxmem) |
|
{ |
|
switch (mm) { |
|
case IO_MPOOL: /* mpool */ |
|
io_mpool = mpool_init(maxmem); |
|
if (io_mpool) { |
|
io_malloc = mpool_xmalloc; |
|
io_calloc = mpool_xcalloc; |
|
io_realloc = mpool_xrealloc; |
|
io_strdup = mpool_xstrdup; |
|
io_free = mpool_xfree; |
|
use_mm = mm; |
|
break; |
|
} else { |
|
#undef USE_MPOOL |
|
} |
|
case IO_SYSM: /* system */ |
|
io_malloc = malloc; |
|
io_calloc = calloc; |
|
io_realloc = realloc; |
|
io_strdup = strdup; |
|
io_free = free; |
|
use_mm = mm; |
|
break; |
|
default: /* not supported */ |
|
io_SetErr(EINVAL, "Not supported memory management"); |
|
return -1; |
|
} |
|
|
|
return use_mm; |
|
} |
|
|
|
/* |
|
* ioLibFini() - Finish libaitio library memory management |
|
* |
|
* return: none |
|
*/ |
|
inline void |
|
ioLibFini() |
|
{ |
|
switch (use_mm) { |
|
case 1: |
|
mpool_destroy(&io_mpool); |
|
|
|
io_malloc = malloc; |
|
io_calloc = calloc; |
|
io_realloc = realloc; |
|
io_strdup = strdup; |
|
io_free = free; |
|
use_mm = IO_SYSM; |
|
break; |
|
} |
} |
} |
|
|
|
|