| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright 2023 Red Hat |
| */ |
| |
| #ifndef VDO_THREAD_REGISTRY_H |
| #define VDO_THREAD_REGISTRY_H |
| |
| #include <linux/list.h> |
| #include <linux/spinlock.h> |
| |
| struct thread_registry { |
| struct list_head links; |
| spinlock_t lock; |
| }; |
| |
| struct registered_thread { |
| struct list_head links; |
| const void *pointer; |
| struct task_struct *task; |
| }; |
| |
| void vdo_initialize_thread_registry(struct thread_registry *registry); |
| |
| void vdo_register_thread(struct thread_registry *registry, |
| struct registered_thread *new_thread, const void *pointer); |
| |
| void vdo_unregister_thread(struct thread_registry *registry); |
| |
| const void *vdo_lookup_thread(struct thread_registry *registry); |
| |
| #endif /* VDO_THREAD_REGISTRY_H */ |