/* * fixup_free is called when: * - an active object is freed */ static int hrtimer_fixup_free(void *addr, enum debug_obj_state state) { struct hrtimer *timer = addr; switch (state) { case ODEBUG_STATE_ACTIVE: hrtimer_cancel(timer); debug_object_free(timer, &hrtimer_debug_descr); return 1; default: return 0; } }
/* * fixup_free is called when: * - an active object is freed */ static int timer_fixup_free(void *addr, enum debug_obj_state state) { struct tti_timer_list *timer = addr; switch (state) { case ODEBUG_STATE_ACTIVE: tti_del_timer(timer); debug_object_free(timer, &timer_debug_descr); return 1; default: return 0; } }
void destroy_hrtimer_on_stack(struct hrtimer *timer) { debug_object_free(timer, &hrtimer_debug_descr); }
static inline void debug_hrtimer_free(struct hrtimer *timer) { debug_object_free(timer, &hrtimer_debug_descr); }
/** * destroy_rcu_head_on_stack() - destroy on-stack rcu_head for debugobjects * @head: pointer to rcu_head structure to be initialized * * This function informs debugobjects that an on-stack rcu_head structure * is about to go out of scope. As with init_rcu_head_on_stack(), this * function is not required for rcu_head structures that are statically * defined or that are dynamically allocated on the heap. Also as with * init_rcu_head_on_stack(), this function has no effect for * !CONFIG_DEBUG_OBJECTS_RCU_HEAD kernel builds. */ void destroy_rcu_head_on_stack(struct rcu_head *head) { debug_object_free(head, &rcuhead_debug_descr); }
static inline void debug_rcu_head_free(struct rcu_head *head) { debug_object_free(head, &rcuhead_debug_descr); }
static inline void debug_timer_free(struct tti_timer_list *timer) { debug_object_free(timer, &timer_debug_descr); }