/** @file interval_tree.h @brief Interval sets based on rbtree @details Copyright (c) 2024 Acronis International GmbH @author Bruce Wang ([email protected]) @since $Id: $ */ #include <linux/rbtree.h> #include <linux/types.h> #ifdef KERNEL_MOCK #include <mock/mock_types.h> #endif typedef struct { struct rb_root root; // The interval_count should be less then the size of file uint64_t interval_count; #ifdef INTERVAL_SET_DEBUG uint64_t total_interval_size; #endif } interval_set_t; #ifdef __cplusplus extern "C" { #endif void clean_interval_tree(interval_set_t *set); bool insert_interval(uint64_t low, uint64_t high, interval_set_t *set); bool check_interval(uint64_t low, uint64_t high, interval_set_t *set); #ifdef __cplusplus } #endif