LCOV - code coverage report
Current view: top level - lkbce/include/linux - debugobjects.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 2 100.0 %
Date: 2017-01-25 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef _LINUX_DEBUGOBJECTS_H
       2             : #define _LINUX_DEBUGOBJECTS_H
       3             : 
       4             : #include <linux/list.h>
       5             : #include <linux/spinlock.h>
       6             : 
       7             : enum debug_obj_state {
       8             :         ODEBUG_STATE_NONE,
       9             :         ODEBUG_STATE_INIT,
      10             :         ODEBUG_STATE_INACTIVE,
      11             :         ODEBUG_STATE_ACTIVE,
      12             :         ODEBUG_STATE_DESTROYED,
      13             :         ODEBUG_STATE_NOTAVAILABLE,
      14             :         ODEBUG_STATE_MAX,
      15             : };
      16             : 
      17             : struct debug_obj_descr;
      18             : 
      19             : /**
      20             :  * struct debug_obj - representaion of an tracked object
      21             :  * @node:       hlist node to link the object into the tracker list
      22             :  * @state:      tracked object state
      23             :  * @object:     pointer to the real object
      24             :  * @descr:      pointer to an object type specific debug description structure
      25             :  */
      26             : struct debug_obj {
      27             :         struct hlist_node       node;
      28             :         enum debug_obj_state    state;
      29             :         void                    *object;
      30             :         struct debug_obj_descr  *descr;
      31             : };
      32             : 
      33             : /**
      34             :  * struct debug_obj_descr - object type specific debug description structure
      35             :  * @name:               name of the object typee
      36             :  * @fixup_init:         fixup function, which is called when the init check
      37             :  *                      fails
      38             :  * @fixup_activate:     fixup function, which is called when the activate check
      39             :  *                      fails
      40             :  * @fixup_destroy:      fixup function, which is called when the destroy check
      41             :  *                      fails
      42             :  * @fixup_free:         fixup function, which is called when the free check
      43             :  *                      fails
      44             :  */
      45             : struct debug_obj_descr {
      46             :         const char              *name;
      47             : 
      48             :         int (*fixup_init)       (void *addr, enum debug_obj_state state);
      49             :         int (*fixup_activate)   (void *addr, enum debug_obj_state state);
      50             :         int (*fixup_destroy)    (void *addr, enum debug_obj_state state);
      51             :         int (*fixup_free)       (void *addr, enum debug_obj_state state);
      52             : };
      53             : 
      54             : #ifdef CONFIG_DEBUG_OBJECTS
      55             : extern void debug_object_init      (void *addr, struct debug_obj_descr *descr);
      56             : extern void
      57             : debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr);
      58             : extern void debug_object_activate  (void *addr, struct debug_obj_descr *descr);
      59             : extern void debug_object_deactivate(void *addr, struct debug_obj_descr *descr);
      60             : extern void debug_object_destroy   (void *addr, struct debug_obj_descr *descr);
      61             : extern void debug_object_free      (void *addr, struct debug_obj_descr *descr);
      62             : 
      63             : extern void debug_objects_early_init(void);
      64             : extern void debug_objects_mem_init(void);
      65             : #else
      66             : static inline void
      67             : debug_object_init      (void *addr, struct debug_obj_descr *descr) { }
      68             : static inline void
      69             : debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { }
      70             : static inline void
      71             : debug_object_activate  (void *addr, struct debug_obj_descr *descr) { }
      72             : static inline void
      73             : debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { }
      74             : static inline void
      75             : debug_object_destroy   (void *addr, struct debug_obj_descr *descr) { }
      76             : static inline void
      77             : debug_object_free      (void *addr, struct debug_obj_descr *descr) { }
      78             : 
      79             : static inline void debug_objects_early_init(void) { }
      80             : static inline void debug_objects_mem_init(void) { }
      81             : #endif
      82             : 
      83             : #ifdef CONFIG_DEBUG_OBJECTS_FREE
      84             : extern void debug_check_no_obj_freed(const void *address, unsigned long size);
      85             : #else
      86             : static inline void
      87             : debug_check_no_obj_freed(const void *address, unsigned long size) { }
      88             : #endif
      89             : 
      90           1 : #endif

Generated by: LCOV version 1.10