include/linux/btree.h
Source file repositories/reference/linux-study-clean/include/linux/btree.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/btree.h- Extension
.h- Size
- 7000 bytes
- Lines
- 245
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/kernel.hlinux/mempool.hlinux/btree-128.hlinux/btree-type.h
Detected Declarations
struct btree_headstruct btree_geo
Annotated Snippet
struct btree_head {
unsigned long *node;
mempool_t *mempool;
int height;
};
/* btree geometry */
struct btree_geo;
/**
* btree_alloc - allocate function for the mempool
* @gfp_mask: gfp mask for the allocation
* @pool_data: unused
*/
void *btree_alloc(gfp_t gfp_mask, void *pool_data);
/**
* btree_free - free function for the mempool
* @element: the element to free
* @pool_data: unused
*/
void btree_free(void *element, void *pool_data);
/**
* btree_init_mempool - initialise a btree with given mempool
*
* @head: the btree head to initialise
* @mempool: the mempool to use
*
* When this function is used, there is no need to destroy
* the mempool.
*/
void btree_init_mempool(struct btree_head *head, mempool_t *mempool);
/**
* btree_init - initialise a btree
*
* @head: the btree head to initialise
*
* This function allocates the memory pool that the
* btree needs. Returns zero or a negative error code
* (-%ENOMEM) when memory allocation fails.
*
*/
int __must_check btree_init(struct btree_head *head);
/**
* btree_destroy - destroy mempool
*
* @head: the btree head to destroy
*
* This function destroys the internal memory pool, use only
* when using btree_init(), not with btree_init_mempool().
*/
void btree_destroy(struct btree_head *head);
/**
* btree_lookup - look up a key in the btree
*
* @head: the btree to look in
* @geo: the btree geometry
* @key: the key to look up
*
* This function returns the value for the given key, or %NULL.
*/
void *btree_lookup(struct btree_head *head, struct btree_geo *geo,
unsigned long *key);
/**
* btree_insert - insert an entry into the btree
*
* @head: the btree to add to
* @geo: the btree geometry
* @key: the key to add (must not already be present)
* @val: the value to add (must not be %NULL)
* @gfp: allocation flags for node allocations
*
* This function returns 0 if the item could be added, or an
* error code if it failed (may fail due to memory pressure).
*/
int __must_check btree_insert(struct btree_head *head, struct btree_geo *geo,
unsigned long *key, void *val, gfp_t gfp);
/**
* btree_update - update an entry in the btree
*
* @head: the btree to update
* @geo: the btree geometry
* @key: the key to update
* @val: the value to change it to (must not be %NULL)
*
Annotation
- Immediate include surface: `linux/kernel.h`, `linux/mempool.h`, `linux/btree-128.h`, `linux/btree-type.h`.
- Detected declarations: `struct btree_head`, `struct btree_geo`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.