From 40ea26d7fa3e9214a7da4bb1280515948e1a1568 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 27 Nov 2007 19:41:52 +0000 Subject: =?UTF-8?q?I=20=E2=9D=A4=20=C2=B5-opts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ev.3 | 16 ++++++++-------- ev.c | 12 ++++++------ ev.h | 4 +++- ev.html | 16 ++++++++-------- ev.pod | 14 +++++++------- 5 files changed, 32 insertions(+), 30 deletions(-) diff --git a/ev.3 b/ev.3 index d718a09..757d850 100644 --- a/ev.3 +++ b/ev.3 @@ -242,13 +242,13 @@ might be supported on the current system, you would need to look at recommended ones. .Sp See the description of \f(CW\*(C`ev_embed\*(C'\fR watchers for more info. -.IP "ev_set_allocator (void *(*cb)(void *ptr, long size))" 4 -.IX Item "ev_set_allocator (void *(*cb)(void *ptr, long size))" -Sets the allocation function to use (the prototype is similar to the -realloc C function, the semantics are identical). 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. +.IP "ev_set_allocator (void *(*cb)(void *ptr, size_t size))" 4 +.IX Item "ev_set_allocator (void *(*cb)(void *ptr, size_t size))" +Sets the allocation function to use (the prototype and semantics are +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. .Sp You could override this function in high-availability programs to, say, free some memory if it cannot allocate memory, to use a special allocator, @@ -259,7 +259,7 @@ retries: better than mine). .Sp .Vb 6 \& static void * -\& persistent_realloc (void *ptr, long size) +\& persistent_realloc (void *ptr, size_t size) \& { \& for (;;) \& { diff --git a/ev.c b/ev.c index 8911cb8..4452952 100644 --- a/ev.c +++ b/ev.c @@ -255,22 +255,22 @@ syserr (const char *msg) } } -static void *(*alloc)(void *ptr, long size); +static void *(*alloc)(void *ptr, size_t size) = realloc; void -ev_set_allocator (void *(*cb)(void *ptr, long size)) +ev_set_allocator (void *(*cb)(void *ptr, size_t size)) { alloc = cb; } -static void * -ev_realloc (void *ptr, long size) +inline_speed void * +ev_realloc (void *ptr, size_t size) { - ptr = alloc ? alloc (ptr, size) : realloc (ptr, size); + ptr = alloc (ptr, size); if (!ptr && size) { - fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", size); + fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", (long)size); abort (); } diff --git a/ev.h b/ev.h index 26ffe78..db79520 100644 --- a/ev.h +++ b/ev.h @@ -66,6 +66,8 @@ typedef double ev_tstamp; /*****************************************************************************/ +#include /* for size_t */ + #if EV_STAT_ENABLE # include #endif @@ -334,7 +336,7 @@ ev_tstamp ev_time (void); * or take some potentially destructive action. * The default is your system realloc function. */ -void ev_set_allocator (void *(*cb)(void *ptr, long size)); +void ev_set_allocator (void *(*cb)(void *ptr, size_t size)); /* set the callback function to call on a * retryable syscall error diff --git a/ev.html b/ev.html index 5bcffd0..bd93853 100644 --- a/ev.html +++ b/ev.html @@ -6,7 +6,7 @@ - + @@ -181,20 +181,20 @@ might be supported on the current system, you would need to look at recommended ones.

See the description of ev_embed watchers for more info.

-
ev_set_allocator (void *(*cb)(void *ptr, long size))
+
ev_set_allocator (void *(*cb)(void *ptr, size_t size))
-

Sets the allocation function to use (the prototype is similar to the -realloc C function, the semantics are identical). 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.

+

Sets the allocation function to use (the prototype and semantics are +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.

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: better than mine).

   static void *
-   persistent_realloc (void *ptr, long size)
+   persistent_realloc (void *ptr, size_t size)
    {
      for (;;)
        {
diff --git a/ev.pod b/ev.pod
index 5b0835d..dceb010 100644
--- a/ev.pod
+++ b/ev.pod
@@ -117,13 +117,13 @@ recommended ones.
 
 See the description of C watchers for more info.
 
-=item ev_set_allocator (void *(*cb)(void *ptr, long size))
+=item ev_set_allocator (void *(*cb)(void *ptr, size_t size))
 
-Sets the allocation function to use (the prototype is similar to the
-realloc C function, the semantics are identical). 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.
+Sets the allocation function to use (the prototype and semantics are
+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.
 
 You could override this function in high-availability programs to, say,
 free some memory if it cannot allocate memory, to use a special allocator,
@@ -133,7 +133,7 @@ Example: replace the libev allocator with one that waits a bit and then
 retries: better than mine).
 
    static void *
-   persistent_realloc (void *ptr, long size)
+   persistent_realloc (void *ptr, size_t size)
    {
      for (;;)
        {
-- 
cgit v1.2.3