• Tejun Heo's avatar
    devres: device resource management · 9ac7849e
    Tejun Heo authored
    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: default avatarTejun Heo <htejun@gmail.com>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    9ac7849e
devres.c 15.8 KB