Browse Source

fucking windows hates iso c, stupid microsoft lock-in strategy

master
Marc Alexander Lehmann 14 years ago
parent
commit
c32dc85776
5 changed files with 31 additions and 30 deletions
  1. +8
    -7
      ev.3
  2. +7
    -7
      ev.c
  3. +1
    -3
      ev.h
  4. +8
    -7
      ev.html
  5. +7
    -6
      ev.pod

+ 8
- 7
ev.3 View File

@ -307,13 +307,14 @@ 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, 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.
.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 \- 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.
.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,


+ 7
- 7
ev.c View File

@ -283,22 +283,22 @@ syserr (const char *msg)
}
}
static void *(*alloc)(void *ptr, size_t size) = realloc;
static void *(*alloc)(void *ptr, long size);
void
ev_set_allocator (void *(*cb)(void *ptr, size_t size))
ev_set_allocator (void *(*cb)(void *ptr, long size))
{
alloc = cb;
}
inline_speed void *
ev_realloc (void *ptr, size_t size)
ev_realloc (void *ptr, long size)
{
ptr = alloc (ptr, size);
ptr = alloc ? alloc (ptr, size) : realloc (ptr, size);
if (!ptr && size)
{
fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", (long)size);
fprintf (stderr, "libev: cannot allocate %ld bytes, aborting.", size);
abort ();
}
@ -326,12 +326,12 @@ typedef struct
int events;
} ANPENDING;
#if EV_USE_INOTIFY
typedef struct
{
#if EV_USE_INOTIFY
WL head;
#endif
} ANFS;
#endif
#if EV_MULTIPLICITY


+ 1
- 3
ev.h View File

@ -66,8 +66,6 @@ typedef double ev_tstamp;
/*****************************************************************************/
#include <stddef.h> /* for size_t */
#if EV_STAT_ENABLE
# include <sys/stat.h>
#endif
@ -338,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, size_t size));
void ev_set_allocator (void *(*cb)(void *ptr, long size));
/* set the callback function to call on a
* retryable syscall error


+ 8
- 7
ev.html View File

@ -6,7 +6,7 @@
<meta name="description" content="Pod documentation for libev" />
<meta name="inputfile" content="&lt;standard input&gt;" />
<meta name="outputfile" content="&lt;standard output&gt;" />
<meta name="created" content="Wed Nov 28 12:31:29 2007" />
<meta name="created" content="Wed Nov 28 18:32:11 2007" />
<meta name="generator" content="Pod::Xhtml 1.57" />
<link rel="stylesheet" href="http://res.tst.eu/pod.css"/></head>
<body>
@ -232,13 +232,14 @@ might be supported on the current system, you would need to look at
recommended ones.</p>
<p>See the description of <code>ev_embed</code> watchers for more info.</p>
</dd>
<dt>ev_set_allocator (void *(*cb)(void *ptr, size_t size))</dt>
<dt>ev_set_allocator (void *(*cb)(void *ptr, long size))</dt>
<dd>
<p>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.</p>
<p>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.</p>
<p>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.</p>


+ 7
- 6
ev.pod View File

@ -165,13 +165,14 @@ recommended ones.
See the description of C<ev_embed> watchers for more info.
=item ev_set_allocator (void *(*cb)(void *ptr, size_t size))
=item ev_set_allocator (void *(*cb)(void *ptr, long 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.
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.
You could override this function in high-availability programs to, say,
free some memory if it cannot allocate memory, to use a special allocator,


Loading…
Cancel
Save