|
|
@ -198,18 +198,21 @@ See the description of C<ev_embed> watchers for more info. |
|
|
|
=item ev_set_allocator (void *(*cb)(void *ptr, long size)) |
|
|
|
|
|
|
|
Sets the allocation function to use (the prototype is similar - the |
|
|
|
semantics is identical - to the realloc C function). It is used to |
|
|
|
allocate and free memory (no surprises here). If it returns zero when |
|
|
|
memory needs to be allocated, the library might abort or take some |
|
|
|
potentially destructive action. The default is your system realloc |
|
|
|
function. |
|
|
|
semantics are identical to the C<realloc> C89/SuS/POSIX function). It is |
|
|
|
used to allocate and free memory (no surprises here). If it returns zero |
|
|
|
when memory needs to be allocated (C<size != 0>), the library might abort |
|
|
|
or take some potentially destructive action. |
|
|
|
|
|
|
|
Since some systems (at least OpenBSD and Darwin) fail to implement |
|
|
|
correct C<realloc> semantics, libev will use a wrapper around the system |
|
|
|
C<realloc> and C<free> functions by default. |
|
|
|
|
|
|
|
You could override this function in high-availability programs to, say, |
|
|
|
free some memory if it cannot allocate memory, to use a special allocator, |
|
|
|
or even to sleep a while and retry until some memory is available. |
|
|
|
|
|
|
|
Example: Replace the libev allocator with one that waits a bit and then |
|
|
|
retries). |
|
|
|
retries (example requires a standards-compliant C<realloc>). |
|
|
|
|
|
|
|
static void * |
|
|
|
persistent_realloc (void *ptr, size_t size) |
|
|
|