FILE
nstree_types.h
File preview with syntax highlighting.
linux-6.19.14/include/linux/ns/nstree_types.h
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright (c) 2025 Christian Brauner <brauner@kernel.org> */ 3#ifndef _LINUX_NSTREE_TYPES_H 4#define _LINUX_NSTREE_TYPES_H 5 6#include <linux/rbtree.h> 7#include <linux/list.h> 8 9/** 10 * struct ns_tree_root - Root of a namespace tree 11 * @ns_rb: Red-black tree root for efficient lookups 12 * @ns_list_head: List head for sequential iteration 13 * 14 * Each namespace tree maintains both an rbtree (for O(log n) lookups) 15 * and a list (for efficient sequential iteration). The list is kept in 16 * the same sorted order as the rbtree. 17 */ 18struct ns_tree_root { 19 struct rb_root ns_rb; 20 struct list_head ns_list_head; 21}; 22 23/** 24 * struct ns_tree_node - Node in a namespace tree 25 * @ns_node: Red-black tree node 26 * @ns_list_entry: List entry for sequential iteration 27 * 28 * Represents a namespace's position in a tree. Each namespace has 29 * multiple tree nodes for different trees (unified, per-type, owner). 30 */ 31struct ns_tree_node { 32 struct rb_node ns_node; 33 struct list_head ns_list_entry; 34}; 35 36/** 37 * struct ns_tree - Namespace tree nodes and active reference count 38 * @ns_id: Unique namespace identifier 39 * @__ns_ref_active: Active reference count (do not use directly) 40 * @ns_unified_node: Node in the global namespace tree 41 * @ns_tree_node: Node in the per-type namespace tree 42 * @ns_owner_node: Node in the owner namespace's tree of owned namespaces 43 * @ns_owner_root: Root of the tree of namespaces owned by this namespace 44 * (only used when this namespace is an owner) 45 */ 46struct ns_tree { 47 u64 ns_id; 48 atomic_t __ns_ref_active; 49 struct ns_tree_node ns_unified_node; 50 struct ns_tree_node ns_tree_node; 51 struct ns_tree_node ns_owner_node; 52 struct ns_tree_root ns_owner_root; 53}; 54 55#endif /* _LINUX_NSTREE_TYPES_H */
~/
Read-only file preview.