Skip to content
Snippets Groups Projects
Select Git revision
  • 13731de6add8a543b1fc9ea292197d81a517ef9e
  • master default protected
  • android-msm-bullhead-3.10-nougat_kgdb_less_changes
  • android-msm-bullhead-3.10-nougat_kgdb
  • android-msm-bullhead-3.10-nougat_klist
  • android-4.4
  • android-msm-vega-4.4-oreo-daydream
  • android-msm-wahoo-4.4-p-preview-5
  • android-msm-wahoo-4.4-pie
  • android-msm-marlin-3.18-p-preview-5
  • android-msm-marlin-3.18-pie
  • android-msm-wahoo-2018.07-oreo-m2
  • android-msm-wahoo-2018.07-oreo-m4
  • android-msm-wahoo-4.4-p-preview-4
  • android-msm-bullhead-3.10-oreo-m6
  • android-msm-angler-3.10-oreo-m6
  • android-msm-marlin-3.18-p-preview-4
  • android-msm-stargazer-3.18-oreo-wear-dr
  • android-msm-catshark-3.18-oreo-wear-dr
  • android-msm-wahoo-4.4-oreo-m2
  • android-msm-wahoo-4.4-oreo-m4
  • android-daydreamos-8.0.0_r0.5
  • android-8.1.0_r0.92
  • android-8.1.0_r0.91
  • android-daydreamos-8.0.0_r0.4
  • android-p-preview-5_r0.2
  • android-p-preview-5_r0.1
  • android-9.0.0_r0.5
  • android-9.0.0_r0.4
  • android-9.0.0_r0.2
  • android-9.0.0_r0.1
  • android-8.1.0_r0.81
  • android-8.1.0_r0.80
  • android-8.1.0_r0.78
  • android-8.1.0_r0.76
  • android-8.1.0_r0.75
  • android-8.1.0_r0.72
  • android-8.1.0_r0.70
  • android-p-preview-4_r0.2
  • android-p-preview-4_r0.1
  • android-wear-8.0.0_r0.30
41 results

devres.c

Blame
  • devres.c 20.01 KiB
    /*
     * drivers/base/devres.c - device resource management
     *
     * Copyright (c) 2006  SUSE Linux Products GmbH
     * Copyright (c) 2006  Tejun Heo <teheo@suse.de>
     *
     * This file is released under the GPLv2.
     */
    
    #include <linux/device.h>
    #include <linux/module.h>
    #include <linux/slab.h>
    
    #include "base.h"
    
    struct devres_node {
    	struct list_head		entry;
    	dr_release_t			release;
    #ifdef CONFIG_DEBUG_DEVRES
    	const char			*name;
    	size_t				size;
    #endif
    };
    
    struct devres {
    	struct devres_node		node;
    	/* -- 3 pointers */
    	unsigned long long		data[];	/* guarantee ull alignment */
    };
    
    struct devres_group {
    	struct devres_node		node[2];
    	void				*id;
    	int				color;
    	/* -- 8 pointers */
    };
    
    #ifdef CONFIG_DEBUG_DEVRES
    static int log_devres = 0;
    module_param_named(log, log_devres, int, S_IRUGO | S_IWUSR);
    
    static void set_node_dbginfo(struct devres_node *node, const char *name,
    			     size_t size)
    {
    	node->name = name;
    	node->size = size;
    }
    
    static void devres_log(struct device *dev, struct devres_node *node,
    		       const char *op)
    {
    	if (unlikely(log_devres))
    		dev_err(dev, "DEVRES %3s %p %s (%lu bytes)\n",
    			op, node, node->name, (unsigned long)node->size);
    }
    #else /* CONFIG_DEBUG_DEVRES */
    #define set_node_dbginfo(node, n, s)	do {} while (0)
    #define devres_log(dev, node, op)	do {} while (0)
    #endif /* CONFIG_DEBUG_DEVRES */
    
    /*
     * Release functions for devres group.  These callbacks are used only
     * for identification.
     */
    static void group_open_release(struct device *dev, void *res)
    {
    	/* noop */
    }
    
    static void group_close_release(struct device *dev, void *res)