kmalloc_incref()
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 20 Jun 2014 19:52:24 +0000 (12:52 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 20 Jun 2014 20:01:27 +0000 (13:01 -0700)
commit4925a4f9e8153754743400bf38b69f9d6eaabfd8
tree2cf83167038a9783c45bb9ace1fe02a6631e0ff0
parenta79067017990e97e5ff5d8ea07406d20bf7da9dd
kmalloc_incref()

All kmalloc'd blobs are reference counted.  kmalloc() gives you one ref.
You can get more with kmalloc_incref().  Release them with kfree().

Note that if you krealloc, you may or may not get a new buffer.  If you
have a buffer with more than one ref, and if you realloc and get a new
buffer, the caller to krealloc gets the new buffer with refcnt == 1, and
the original buffer gets decreffed by 1.  At that point, both ref users
are pointing to different blobs with the same, but copied, contents.
kern/include/kmalloc.h
kern/src/kmalloc.c
kern/src/ktest/Kconfig.postboot
kern/src/ktest/pb_ktests.c