[cairo] Using OS/2 memory allocation APIs

Behdad Esfahbod behdad at behdad.org
Mon Nov 19 12:17:40 PST 2007

On Mon, 2007-11-19 at 19:38 -0500, Peter Weilbacher wrote:
> This is something I have tried for Mozilla apps on OS/2. When I use the
> OS/2 APIs to allocate some of the larger buffers for cairo, these are
> given back to the system immediately when freeing them. This apparently
> reduces memory fragmentation a lot compared to using standard C functions,
> so I would really like to get this in.
> The attached patch leaves the standard functions in place (as the default
> option on compilation) because using DosAllocMem() is not desirable for
> all programs (it has some extra memory overhead that would be noticeable
> for smaller programs).
> I thought of replacing the Vlad's _cairo_malloc macros with something like
> this for OS/2, so that other parts of the code could also benefit from
> this. But I think I would actually convert the macros to functions then
> because this API returns the allocated memory pointer in an argument
> instead of the return value. So in principle I'm asking, if the attached
> patch would be good to push (sorry, it's against the Mozilla CVS version,
> can't access git right now). I was also thinking about adding similar
> #ifdefs in cairo-pdf-surface.c, cairo-image-surface.c , and pixman-image.c
> for the pixel buffers that are allocated and freed there...
>     Peter.

Hi Peter,

If you ask me, there's no way to get that in cairo.  It's just plain
ugly and totally against cairo's coding standards.  If it didn't need a
different free function there was some hope of doing it, but with a
separate free() I don't think so.

If we go ahead and do add that, one can request a similar change for
Linux to use mmap for large allocations.  Probably similar stuff exist
on other platforms too.  But I think we should just leave that to libc
hackers.  OS/2 is no exception IMO.

Sorry about that.


"Those who would give up Essential Liberty to purchase a little
 Temporary Safety, deserve neither Liberty nor Safety."
        -- Benjamin Franklin, 1759

More information about the cairo mailing list