FILE
unwind_deferred_types.h
File preview with syntax highlighting.
linux-6.19.14/include/linux/unwind_deferred_types.h
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef _LINUX_UNWIND_USER_DEFERRED_TYPES_H 3#define _LINUX_UNWIND_USER_DEFERRED_TYPES_H 4 5#include <linux/types.h> 6#include <linux/atomic.h> 7 8struct unwind_cache { 9 unsigned long unwind_completed; 10 unsigned int nr_entries; 11 unsigned long entries[]; 12}; 13 14/* 15 * The unwind_task_id is a unique identifier that maps to a user space 16 * stacktrace. It is generated the first time a deferred user space 17 * stacktrace is requested after a task has entered the kerenl and 18 * is cleared to zero when it exits. The mapped id will be a non-zero 19 * number. 20 * 21 * To simplify the generation of the 64 bit number, 32 bits will be 22 * the CPU it was generated on, and the other 32 bits will be a per 23 * cpu counter that gets incremented by two every time a new identifier 24 * is generated. The LSB will always be set to keep the value 25 * from being zero. 26 */ 27union unwind_task_id { 28 struct { 29 u32 cpu; 30 u32 cnt; 31 }; 32 u64 id; 33}; 34 35struct unwind_task_info { 36 atomic_long_t unwind_mask; 37 struct unwind_cache *cache; 38 struct callback_head work; 39 union unwind_task_id id; 40}; 41 42struct unwind_work; 43struct unwind_stacktrace; 44 45typedef void (*unwind_callback_t)(struct unwind_work *work, 46 struct unwind_stacktrace *trace, 47 u64 cookie); 48 49struct unwind_work { 50 struct list_head list; 51 unwind_callback_t func; 52 int bit; 53}; 54 55#endif /* _LINUX_UNWIND_USER_DEFERRED_TYPES_H */
~/
Read-only file preview.