version 1.10.6.1, 2012/05/23 11:49:35
|
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 use_mm; |
|
|
int io_Errno; |
int io_Errno; |
char io_Error[STRSIZ]; |
char io_Error[STRSIZ]; |
|
|
Line 82 io_SetErr(int eno, char *estr, ...)
|
Line 94 io_SetErr(int eno, char *estr, ...)
|
va_start(lst, estr); |
va_start(lst, estr); |
vsnprintf(io_Error, STRSIZ, estr, lst); |
vsnprintf(io_Error, STRSIZ, estr, lst); |
va_end(lst); |
va_end(lst); |
|
} |
|
|
|
// io_mm_inuse() Check for memory management model |
|
inline int |
|
io_mm_inuse() |
|
{ |
|
return use_mm & IO_MPOOL; |
|
} |
|
|
|
|
|
// init libaitio routine |
|
void |
|
_init() |
|
{ |
|
#ifdef USE_MPOOL |
|
ioLibInit(IO_MPOOL, 0); |
|
#else |
|
ioLibInit(IO_SYSM, 0); |
|
#endif |
|
} |
|
|
|
// fini libaitio routine |
|
void |
|
_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; |
|
} |
} |
} |
|
|
|
|