1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright 2023 Red Hat
4 */
5
6#ifndef VDO_THREAD_REGISTRY_H
7#define VDO_THREAD_REGISTRY_H
8
9#include <linux/list.h>
10#include <linux/spinlock.h>
11
12struct thread_registry {
13	struct list_head links;
14	spinlock_t lock;
15};
16
17struct registered_thread {
18	struct list_head links;
19	const void *pointer;
20	struct task_struct *task;
21};
22
23void vdo_initialize_thread_registry(struct thread_registry *registry);
24
25void vdo_register_thread(struct thread_registry *registry,
26			 struct registered_thread *new_thread, const void *pointer);
27
28void vdo_unregister_thread(struct thread_registry *registry);
29
30const void *vdo_lookup_thread(struct thread_registry *registry);
31
32#endif /* VDO_THREAD_REGISTRY_H */
33