Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

refcount_release(9) [debian man page]

REFCOUNT(9)						   BSD Kernel Developer's Manual					       REFCOUNT(9)

NAME
refcount, refcount_init, refcount_acquire, refcount_release -- manage a simple reference counter SYNOPSIS
#include <sys/param.h> #include <sys/refcount.h> void refcount_init(volatile u_int *count, u_int value); void refcount_acquire(volatile u_int *count); int refcount_release(volatile u_int *count); DESCRIPTION
The refcount functions provide an API to manage a simple reference counter. The caller provides the storage for the counter in an unsigned integer. A pointer to this integer is passed via count. Usually the counter is used to manage the lifetime of an object and is stored as a member of the object. The refcount_init() function is used to set the initial value of the counter to value. It is normally used when creating a reference-counted object. The refcount_acquire() function is used to acquire a new reference. The caller is responsible for ensuring that it holds a valid reference while obtaining a new reference. For example, if an object is stored on a list and the list holds a reference on the object, then holding a lock that protects the list provides sufficient protection for acquiring a new reference. The refcount_release() function is used to release an existing reference. The function returns a non-zero value if the reference being released was the last reference; otherwise, it returns zero. Note that these routines do not provide any inter-CPU synchronization, data protection, or memory ordering guarantees except for managing the counter. The caller is responsible for any additional synchronization needed by consumers of any containing objects. In addition, the call- er is also responsible for managing the life cycle of any containing objects including explicitly releasing any resources when the last ref- erence is released. RETURN VALUES
The refcount_release function returns non-zero when releasing the last reference and zero when releasing any other reference. HISTORY
These functions were introduced in FreeBSD 6.0. BSD
January 20, 2009 BSD

Check Out this Related Man Page

PROPLIB(3)						   BSD Library Functions Manual 						PROPLIB(3)

NAME
proplib -- property container object library LIBRARY
Property Container Object Library (libprop, -lprop) SYNOPSIS
#include <prop/proplib.h> DESCRIPTION
The proplib library provides an abstract interface for creating and manipulating property lists. Property lists have object types for bool- ean values, opaque data, numbers, and strings. Structure is provided by the array and dictionary collection types. Property lists can be passed across protection boundaries by translating them to an external representation. This external representation is an XML document whose format is described by the following DTD: http://www.apple.com/DTDs/PropertyList-1.0.dtd Property container objects are reference counted. When an object is created, its reference count is set to 1. Any code that keeps a refer- ence to an object, including the collection types (arrays and dictionaries), must ``retain'' the object (increment its reference count). When that reference is dropped, the object must be ``released'' (reference count decremented). When an object's reference count drops to 0, it is automatically freed. The rules for managing reference counts are very simple: o If you create an object and do not explicitly maintain a reference to it, you must release it. o If you get a reference to an object from other code and wish to maintain a reference to it, you must retain the object. You are respon- sible for releasing the object once you drop that reference. o You must never release an object unless you create it or retain it. Object collections may be iterated by creating a special iterator object. Iterator objects are special; they may not be retained, and they are released using an iterator-specific release function. SEE ALSO
prop_array(3), prop_bool(3), prop_data(3), prop_dictionary(3), prop_dictionary_util(3), prop_number(3), prop_object(3), prop_send_ioctl(3), prop_send_syscall(3), prop_string(3) HISTORY
The proplib property container object library first appeared in NetBSD 4.0. CAVEATS
proplib does not have a 'date' object type, and thus will not parse 'date' elements from an Apple XML property list. The proplib 'number' object type differs from the Apple XML property list format in the following ways: o The external representation is in base 16, not base 10. proplib is able to parse base 8, base 10, and base 16 'integer' elements. o Internally, integers are always stored as unsigned numbers (uint64_t). Therefore, the external representation will never be negative. o Because floating point numbers are not supported, 'real' elements from an Apple XML property list will not be parsed. In order to facilitate use of proplib in kernel, standalone, and user space environments, the proplib parser is not a real XML parser. It is hard-coded to parse only the property list external representation. BSD
January 17, 2011 BSD
Man Page