diff options
author | root <root> | 2008-04-09 22:07:50 +0000 |
---|---|---|
committer | root <root> | 2008-04-09 22:07:50 +0000 |
commit | 03f02a76c6e1b5786c8afa4e95d8d72e2a91a915 (patch) | |
tree | f9129eb4e9864e491a8706c76859f0f91febaf87 /ev.pod | |
parent | abf163da58241583484ef39140ef6246411a3ac8 (diff) |
*** empty log message ***
Diffstat (limited to 'ev.pod')
-rw-r--r-- | ev.pod | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -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) |