This patch adds utilities for managing and using named threads, as well as several locking and synchronization utilities. These utilities help dm-vdo minimize thread transitions and manage interactions between threads. Co-developed-by: J. corwin Coburn <corwin@hurlbutnet.net> Signed-off-by: J. corwin Coburn <corwin@hurlbutnet.net> Co-developed-by: Michael Sclafani <dm-devel@lists.linux.dev> Signed-off-by: Michael Sclafani <dm-devel@lists.linux.dev> Co-developed-by: Thomas Jaskiewicz <tom@jaskiewicz.us> Signed-off-by: Thomas Jaskiewicz <tom@jaskiewicz.us> Co-developed-by: Bruce Johnston <bjohnsto@redhat.com> Signed-off-by: Bruce Johnston <bjohnsto@redhat.com> Co-developed-by: Ken Raeburn <raeburn@redhat.com> Signed-off-by: Ken Raeburn <raeburn@redhat.com> Signed-off-by: Matthew Sakai <msakai@redhat.com> Signed-off-by: Mike Snitzer <snitzer@kernel.org>
33 lines
729 B
C
33 lines
729 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright 2023 Red Hat
|
|
*/
|
|
|
|
#ifndef UDS_THREAD_REGISTRY_H
|
|
#define UDS_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 uds_initialize_thread_registry(struct thread_registry *registry);
|
|
|
|
void uds_register_thread(struct thread_registry *registry,
|
|
struct registered_thread *new_thread, const void *pointer);
|
|
|
|
void uds_unregister_thread(struct thread_registry *registry);
|
|
|
|
const void *uds_lookup_thread(struct thread_registry *registry);
|
|
|
|
#endif /* UDS_THREAD_REGISTRY_H */
|