On Wed, Nov 15, 2017 at 02:59:20PM +0000, Daniel P. Berrange wrote:
On Wed, Nov 15, 2017 at 12:28:30PM +0100, Bjoern Walk wrote:
> Why has there never been a truly satisfying standard library for C for
> this kind of stuff? If such a project would exist, this wheel
> re-inventing would be prevented while providing a higher-quality code
> for platform library code.
There are countless "standard" libraries all with their own quirks. Many
of them don't even really address the core safety problems. eg we could
consider glib2 for libvirt, but it just replicates the same awful unsafe
malloc API style that the stdc lib has, with marginal improvement.
I think you should look at pool allocators. I really wish I'd used
one in libguestfs ... Pool allocators give you a nice middle ground
between using C and having something which looks and feels a lot like
garbage collection.
Pool allocators also fit nicely to servers because it's natural to
create a new pool for each request and then free everything in the
pool at the end of the request. You can also attach pools to other
concepts (in libvirtd that would include per-VM pools).
Luckily there is now a widely available pool allocator (widely
available because it's used/required by SAMBA):
https://talloc.samba.org/talloc/doc/html/index.html
Rich.
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top