[cairo] Using OS/2 memory allocation APIs
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...
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