rmfree(9f) [sunos man page]
rmfree(9F) Kernel Functions for Drivers rmfree(9F) NAME
rmfree - free space back into a resource map SYNOPSIS
#include <sys/map.h> #include <sys/ddi.h> void rmfree(struct map *mp, size_t size, ulong_t index); INTERFACE LEVEL
Architecture independent level 1 (DDI/DKI). PARAMETERS
mp Pointer to the map structure. size Number of units being freed. index Index of the first unit of the allocated resource. DESCRIPTION
rmfree() releases space back into a resource map. It is the opposite of rmalloc(9F), which allocates space that is controlled by a resource map structure. When releasing resources using rmfree() the size and index passed to rmfree() must exactly match the size and index values passed to and returned from a previous call to rmalloc(). Resources cannot be returned piecemeal. Drivers may define resource maps for resource allocation, in terms of arbitrary units, using the rmallocmap(9F) function. The system main- tains the resource map structure by size and index, computed in units appropriate for the resource. For example, units may be byte addresses, pages of memory, or blocks. rmfree() frees up unallocated space for re-use. rmfree() can also be used to initialize a resource map, in which case the size and index should cover the entire resource area. CONTEXT
rmfree() can be called from user or interrupt context. SEE ALSO
rmalloc(9F), rmalloc_wait(9F), rmallocmap(9F), rmfreemap(9F) Writing Device Drivers SunOS 5.10 4 Jun 2001 rmfree(9F)
Check Out this Related Man Page
rmallocmap(9F) Kernel Functions for Drivers rmallocmap(9F) NAME
rmallocmap, rmallocmap_wait, rmfreemap - allocate and free resource maps SYNOPSIS
#include <sys/ddi.h> #include <sys/sunddi.h> struct map *rmallocmap(size_t mapsize); struct map *rmallocmap_wait(size_t mapsize); void rmfreemap(struct map *mp); INTERFACE LEVEL
Architecture independent level 1 (DDI/DKI). PARAMETERS
mapsize Number of entries for the map. mp A pointer to the map structure to be deallocated. DESCRIPTION
rmallocmap() dynamically allocates a resource map structure. The argument mapsize defines the total number of entries in the map. In par- ticular, it is the total number of allocations that can be outstanding at any one time. rmallocmap() initializes the map but does not associate it with the actual resource. In order to associate the map with the actual resource, a call to rmfree(9F) is used to make the entirety of the actual resource available for allocation, starting from the first index into the resource. Typically, the call to rmallocmap() is followed by a call to rmfree(9F), passing the address of the map returned from rmallocmap(), the total size of the resource, and the first index into the actual resource. The resource map allocated by rmallocmap() can be used to describe an arbitrary resource in whatever allocation units are appropriate, such as blocks, pages, or data structures. This resource can then be managed by the system by subsequent calls to rmalloc(9F), rmal- loc_wait(9F), and rmfree(9F). rmallocmap_wait() is similar to rmallocmap(), with the exception that it will wait for space to become available if necessary. rmfreemap() deallocates a resource map structure previously allocated by rmallocmap() or rmallocmap_wait(). The argument mp is a pointer to the map structure to be deallocated. RETURN VALUES
Upon successful completion, rmallocmap() and rmallocmap_wait() return a pointer to the newly allocated map structure. Upon failure, rmal- locmap() returns a NULL pointer. CONTEXT
rmallocmap() and rmfreemap() can be called from user, kernel, or interrupt context. rmallocmap_wait() can only be called from user or kernel context. SEE ALSO
rmalloc(9F), rmalloc_wait(9F), rmfree(9F) Writing Device Drivers SunOS 5.10 20 Nov 1996 rmallocmap(9F)