FreeBSD kernel kern code
subr_rangeset.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/pctrie.h>
#include <sys/rangeset.h>
#include <vm/uma.h>
#include "opt_ddb.h"
Include dependency graph for subr_rangeset.c:

Go to the source code of this file.

Macros

#define rangeset_check(rs)
 

Functions

 __FBSDID ("$FreeBSD$")
 
static void rs_rangeset_init (void *arg __unused)
 
 SYSINIT (rs, SI_SUB_LOCK, SI_ORDER_ANY, rs_rangeset_init, NULL)
 
static void * rs_node_alloc (struct pctrie *ptree)
 
static void rs_node_free (struct pctrie *ptree __unused, void *node)
 
void rangeset_init (struct rangeset *rs, rs_dup_data_t dup_data, rs_free_data_t free_data, void *data_ctx, u_int alloc_flags)
 
void rangeset_fini (struct rangeset *rs)
 
bool rangeset_check_empty (struct rangeset *rs, uint64_t start, uint64_t end)
 
int rangeset_insert (struct rangeset *rs, uint64_t start, uint64_t end, void *data)
 
int rangeset_remove_pred (struct rangeset *rs, uint64_t start, uint64_t end, rs_pred_t pred)
 
static bool rangeset_true_pred (void *ctx __unused, void *r __unused)
 
int rangeset_remove (struct rangeset *rs, uint64_t start, uint64_t end)
 
void rangeset_remove_all (struct rangeset *rs)
 
void * rangeset_lookup (struct rangeset *rs, uint64_t place)
 
int rangeset_copy (struct rangeset *dst_rs, struct rangeset *src_rs)
 

Variables

static uma_zone_t rs_node_zone
 

Macro Definition Documentation

◆ rangeset_check

#define rangeset_check (   rs)

Definition at line 44 of file subr_rangeset.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ rangeset_check_empty()

bool rangeset_check_empty ( struct rangeset *  rs,
uint64_t  start,
uint64_t  end 
)

Definition at line 96 of file subr_rangeset.c.

References pctrie_lookup_le(), rangeset_check, and start.

Here is the call graph for this function:

◆ rangeset_copy()

int rangeset_copy ( struct rangeset *  dst_rs,
struct rangeset *  src_rs 
)

Definition at line 279 of file subr_rangeset.c.

References pctrie_insert(), pctrie_lookup_ge(), rangeset_check, rangeset_remove_all(), and rs_node_alloc().

Here is the call graph for this function:

◆ rangeset_fini()

void rangeset_fini ( struct rangeset *  rs)

Definition at line 88 of file subr_rangeset.c.

References rangeset_check, and rangeset_remove_all().

Here is the call graph for this function:

◆ rangeset_init()

void rangeset_init ( struct rangeset *  rs,
rs_dup_data_t  dup_data,
rs_free_data_t  free_data,
void *  data_ctx,
u_int  alloc_flags 
)

Definition at line 76 of file subr_rangeset.c.

◆ rangeset_insert()

int rangeset_insert ( struct rangeset *  rs,
uint64_t  start,
uint64_t  end,
void *  data 
)

Definition at line 112 of file subr_rangeset.c.

References data, pctrie_insert(), rangeset_check, rangeset_remove(), rs_node_alloc(), and start.

Here is the call graph for this function:

◆ rangeset_lookup()

void * rangeset_lookup ( struct rangeset *  rs,
uint64_t  place 
)

Definition at line 263 of file subr_rangeset.c.

References pctrie_lookup_le(), and rangeset_check.

Here is the call graph for this function:

◆ rangeset_remove()

int rangeset_remove ( struct rangeset *  rs,
uint64_t  start,
uint64_t  end 
)

Definition at line 240 of file subr_rangeset.c.

References rangeset_remove_pred(), rangeset_true_pred(), and start.

Referenced by rangeset_insert().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rangeset_remove_all()

void rangeset_remove_all ( struct rangeset *  rs)

Definition at line 247 of file subr_rangeset.c.

References pctrie_lookup_ge(), pctrie_remove(), and rs_node_free().

Referenced by rangeset_copy(), and rangeset_fini().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rangeset_remove_pred()

int rangeset_remove_pred ( struct rangeset *  rs,
uint64_t  start,
uint64_t  end,
rs_pred_t  pred 
)

Definition at line 131 of file subr_rangeset.c.

References pctrie_insert(), pctrie_lookup_le(), pctrie_remove(), rangeset_check, rs_node_alloc(), rs_node_free(), and start.

Referenced by rangeset_remove().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ rangeset_true_pred()

static bool rangeset_true_pred ( void *ctx  __unused,
void *r  __unused 
)
static

Definition at line 233 of file subr_rangeset.c.

Referenced by rangeset_remove().

Here is the caller graph for this function:

◆ rs_node_alloc()

static void * rs_node_alloc ( struct pctrie *  ptree)
static

Definition at line 60 of file subr_rangeset.c.

References rs_node_zone.

Referenced by rangeset_copy(), rangeset_insert(), and rangeset_remove_pred().

Here is the caller graph for this function:

◆ rs_node_free()

static void rs_node_free ( struct pctrie *ptree  __unused,
void *  node 
)
static

Definition at line 69 of file subr_rangeset.c.

References rs_node_zone.

Referenced by rangeset_remove_all(), and rangeset_remove_pred().

Here is the caller graph for this function:

◆ rs_rangeset_init()

static void rs_rangeset_init ( void *arg  __unused)
static

Definition at line 50 of file subr_rangeset.c.

References pctrie_node_size(), pctrie_zone_init(), and rs_node_zone.

Here is the call graph for this function:

◆ SYSINIT()

SYSINIT ( rs  ,
SI_SUB_LOCK  ,
SI_ORDER_ANY  ,
rs_rangeset_init  ,
NULL   
)

Variable Documentation

◆ rs_node_zone

uma_zone_t rs_node_zone
static

Definition at line 47 of file subr_rangeset.c.

Referenced by rs_node_alloc(), rs_node_free(), and rs_rangeset_init().