… | |
… | |
4 | <head> |
4 | <head> |
5 | <title>libev</title> |
5 | <title>libev</title> |
6 | <meta name="description" content="Pod documentation for libev" /> |
6 | <meta name="description" content="Pod documentation for libev" /> |
7 | <meta name="inputfile" content="<standard input>" /> |
7 | <meta name="inputfile" content="<standard input>" /> |
8 | <meta name="outputfile" content="<standard output>" /> |
8 | <meta name="outputfile" content="<standard output>" /> |
9 | <meta name="created" content="Tue Nov 27 20:23:27 2007" /> |
9 | <meta name="created" content="Tue Nov 27 20:38:24 2007" /> |
10 | <meta name="generator" content="Pod::Xhtml 1.57" /> |
10 | <meta name="generator" content="Pod::Xhtml 1.57" /> |
11 | <link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head> |
11 | <link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head> |
12 | <body> |
12 | <body> |
13 | <div class="pod"> |
13 | <div class="pod"> |
14 | <!-- INDEX START --> |
14 | <!-- INDEX START --> |
… | |
… | |
179 | might be supported on the current system, you would need to look at |
179 | might be supported on the current system, you would need to look at |
180 | <code>ev_embeddable_backends () & ev_supported_backends ()</code>, likewise for |
180 | <code>ev_embeddable_backends () & ev_supported_backends ()</code>, likewise for |
181 | recommended ones.</p> |
181 | recommended ones.</p> |
182 | <p>See the description of <code>ev_embed</code> watchers for more info.</p> |
182 | <p>See the description of <code>ev_embed</code> watchers for more info.</p> |
183 | </dd> |
183 | </dd> |
184 | <dt>ev_set_allocator (void *(*cb)(void *ptr, long size))</dt> |
184 | <dt>ev_set_allocator (void *(*cb)(void *ptr, size_t size))</dt> |
185 | <dd> |
185 | <dd> |
186 | <p>Sets the allocation function to use (the prototype is similar to the |
186 | <p>Sets the allocation function to use (the prototype and semantics are |
187 | realloc C function, the semantics are identical). It is used to allocate |
187 | identical to the realloc C function). It is used to allocate and free |
188 | and free memory (no surprises here). If it returns zero when memory |
188 | memory (no surprises here). If it returns zero when memory needs to be |
189 | needs to be allocated, the library might abort or take some potentially |
189 | allocated, the library might abort or take some potentially destructive |
190 | destructive action. The default is your system realloc function.</p> |
190 | action. The default is your system realloc function.</p> |
191 | <p>You could override this function in high-availability programs to, say, |
191 | <p>You could override this function in high-availability programs to, say, |
192 | free some memory if it cannot allocate memory, to use a special allocator, |
192 | free some memory if it cannot allocate memory, to use a special allocator, |
193 | or even to sleep a while and retry until some memory is available.</p> |
193 | or even to sleep a while and retry until some memory is available.</p> |
194 | <p>Example: replace the libev allocator with one that waits a bit and then |
194 | <p>Example: replace the libev allocator with one that waits a bit and then |
195 | retries: better than mine).</p> |
195 | retries: better than mine).</p> |
196 | <pre> static void * |
196 | <pre> static void * |
197 | persistent_realloc (void *ptr, long size) |
197 | persistent_realloc (void *ptr, size_t size) |
198 | { |
198 | { |
199 | for (;;) |
199 | for (;;) |
200 | { |
200 | { |
201 | void *newptr = realloc (ptr, size); |
201 | void *newptr = realloc (ptr, size); |
202 | |
202 | |