Skip to content
Snippets Groups Projects
Select Git revision
  • a1eae7800eb73b76fb604d5510cbc42a5265be86
  • 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

debugobjects.c

Blame
  • debugobjects.c 26.22 KiB
    /*
     * Generic infrastructure for lifetime debugging of objects.
     *
     * Started by Thomas Gleixner
     *
     * Copyright (C) 2008, Thomas Gleixner <tglx@linutronix.de>
     *
     * For licencing details see kernel-base/COPYING
     */
    #include <linux/debugobjects.h>
    #include <linux/interrupt.h>
    #include <linux/sched.h>
    #include <linux/seq_file.h>
    #include <linux/debugfs.h>
    #include <linux/slab.h>
    #include <linux/hash.h>
    
    #define ODEBUG_HASH_BITS	14
    #define ODEBUG_HASH_SIZE	(1 << ODEBUG_HASH_BITS)
    
    #define ODEBUG_POOL_SIZE	512
    #define ODEBUG_POOL_MIN_LEVEL	256
    
    #define ODEBUG_CHUNK_SHIFT	PAGE_SHIFT
    #define ODEBUG_CHUNK_SIZE	(1 << ODEBUG_CHUNK_SHIFT)
    #define ODEBUG_CHUNK_MASK	(~(ODEBUG_CHUNK_SIZE - 1))
    
    struct debug_bucket {
    	struct hlist_head	list;
    	raw_spinlock_t		lock;
    };
    
    static struct debug_bucket	obj_hash[ODEBUG_HASH_SIZE];
    
    static struct debug_obj		obj_static_pool[ODEBUG_POOL_SIZE] __initdata;
    
    static DEFINE_RAW_SPINLOCK(pool_lock);
    
    static HLIST_HEAD(obj_pool);
    
    static int			obj_pool_min_free = ODEBUG_POOL_SIZE;
    static int			obj_pool_free = ODEBUG_POOL_SIZE;
    static int			obj_pool_used;
    static int			obj_pool_max_used;
    static struct kmem_cache	*obj_cache;
    
    static int			debug_objects_maxchain __read_mostly;
    static int			debug_objects_fixups __read_mostly;
    static int			debug_objects_warnings __read_mostly;
    static int			debug_objects_enabled __read_mostly
    				= CONFIG_DEBUG_OBJECTS_ENABLE_DEFAULT;
    
    static struct debug_obj_descr	*descr_test  __read_mostly;
    
    static void free_obj_work(struct work_struct *work);
    static DECLARE_WORK(debug_obj_work, free_obj_work);
    
    static int __init enable_object_debug(char *str)
    {
    	debug_objects_enabled = 1;
    	return 0;
    }
    
    static int __init disable_object_debug(char *str)
    {
    	debug_objects_enabled = 0;
    	return 0;
    }
    
    early_param("debug_objects", enable_object_debug);