File Index
Files and directories
Sign in
FILE

unwind_deferred_types.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/unwind_deferred_types.h C
 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.