]> git.baikalelectronics.ru Git - kernel.git/commit
devres: device resource management
authorTejun Heo <htejun@gmail.com>
Sat, 20 Jan 2007 07:00:26 +0000 (16:00 +0900)
committerJeff Garzik <jeff@garzik.org>
Fri, 9 Feb 2007 22:39:36 +0000 (17:39 -0500)
commiteff12d5c637ae33834630bf95bdab18b23944f13
tree7f17cdff87e154937a15cc2ec8da9b4e6018ce8e
parentbe1df6b9511f9c3783347406951f7fdab6c4460a
devres: device resource management

Implement device resource management, in short, devres.  A device
driver can allocate arbirary size of devres data which is associated
with a release function.  On driver detach, release function is
invoked on the devres data, then, devres data is freed.

devreses are typed by associated release functions.  Some devreses are
better represented by single instance of the type while others need
multiple instances sharing the same release function.  Both usages are
supported.

devreses can be grouped using devres group such that a device driver
can easily release acquired resources halfway through initialization
or selectively release resources (e.g. resources for port 1 out of 4
ports).

This patch adds devres core including documentation and the following
managed interfaces.

* alloc/free : devm_kzalloc(), devm_kzfree()
* IO region : devm_request_region(), devm_release_region()
* IRQ : devm_request_irq(), devm_free_irq()
* DMA : dmam_alloc_coherent(), dmam_free_coherent(),
  dmam_declare_coherent_memory(), dmam_pool_create(),
  dmam_pool_destroy()
* PCI : pcim_enable_device(), pcim_pin_device(), pci_is_managed()
* iomap : devm_ioport_map(), devm_ioport_unmap(), devm_ioremap(),
  devm_ioremap_nocache(), devm_iounmap(), pcim_iomap_table(),
  pcim_iomap(), pcim_iounmap()

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
21 files changed:
Documentation/driver-model/devres.txt [new file with mode: 0644]
drivers/base/Kconfig
drivers/base/Makefile
drivers/base/base.h
drivers/base/core.c
drivers/base/dd.c
drivers/base/devres.c [new file with mode: 0644]
drivers/base/dma-mapping.c [new file with mode: 0644]
drivers/base/dmapool.c
drivers/pci/pci.c
include/linux/device.h
include/linux/dma-mapping.h
include/linux/dmapool.h
include/linux/interrupt.h
include/linux/io.h
include/linux/ioport.h
include/linux/pci.h
kernel/irq/manage.c
kernel/resource.c
lib/Makefile
lib/iomap.c