di_devlink_handle
close_db(struct di_devlink_handle *hdp)
cache_free(struct di_devlink_handle *hdp)
handle_free(struct di_devlink_handle **pp)
struct di_devlink_handle *hdp = *pp;
subtree_free(struct di_devlink_handle *hdp, cache_node_t **pp)
rm_link_from_hash(struct di_devlink_handle *hdp, cache_link_t *clp)
link2minor(struct di_devlink_handle *hdp, cache_link_t *clp)
struct di_devlink_handle *hdp;
resolve_dangling_links(struct di_devlink_handle *hdp)
minor_free(struct di_devlink_handle *hdp, cache_minor_t **pp)
struct di_devlink_handle *hdp,
lookup_node(struct di_devlink_handle *hdp, char *path, const int flags)
get_last_node(struct di_devlink_handle *hdp, const char *path, int flags)
struct di_devlink_handle *hdp,
set_last_minor(struct di_devlink_handle *hdp, cache_minor_t *cmnp, int flags)
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp;
walk_db(struct di_devlink_handle *hdp, link_desc_t *linkp)
cache_dev(struct di_devlink_handle *hdp)
walk_dev(struct di_devlink_handle *hdp, link_desc_t *linkp)
open_db(struct di_devlink_handle *hdp, int flags)
cache_dev_link(struct di_devlink_handle *hdp, void *data, const char *link)
walk_all_links(struct di_devlink_handle *hdp, link_desc_t *linkp)
walk_matching_links(struct di_devlink_handle *hdp, link_desc_t *linkp)
struct di_devlink_handle *hdp,
rel_path(struct di_devlink_handle *hdp, const char *path)
recurse_dev(struct di_devlink_handle *hdp, recurse_t *rp)
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp,
hash_insert(struct di_devlink_handle *hdp, cache_link_t *clp)
get_node(struct di_devlink_handle *hdp, uint32_t idx)
set_node(struct di_devlink_handle *hdp, uint32_t idx)
get_minor(struct di_devlink_handle *hdp, uint32_t idx)
set_minor(struct di_devlink_handle *hdp, uint32_t idx)
get_link(struct di_devlink_handle *hdp, uint32_t idx)
set_link(struct di_devlink_handle *hdp, uint32_t idx)
get_string(struct di_devlink_handle *hdp, uint32_t idx)
set_string(struct di_devlink_handle *hdp, uint32_t idx)
struct di_devlink_handle *hdp,
seg_size(struct di_devlink_handle *hdp, int seg)
size_db(struct di_devlink_handle *hdp, long page_sz, uint32_t *count)
hashfn(struct di_devlink_handle *hdp, const char *str)
enter_db_lock(struct di_devlink_handle *hdp, const char *root_dir)
static struct di_devlink_handle *
struct di_devlink_handle *hdp, proto = {0};
exit_db_lock(struct di_devlink_handle *hdp)
hdp = calloc(1, sizeof (struct di_devlink_handle));
cache_alloc(struct di_devlink_handle *hdp)
invalid_db(struct di_devlink_handle *hdp, size_t fsize, long page_sz)
read_nodes(struct di_devlink_handle *hdp, cache_node_t *pcnp, uint32_t nidx)
read_minors(struct di_devlink_handle *hdp, cache_node_t *pcnp, uint32_t nidx)
read_links(struct di_devlink_handle *hdp, cache_minor_t *pcmp, uint32_t nidx)
struct di_devlink_handle *hdp;
init_hdr(struct di_devlink_handle *hdp, long page_sz, uint32_t *count)
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp,
struct di_devlink_handle *hdp,
write_string(struct di_devlink_handle *hdp, const char *str, uint32_t *next)
struct di_devlink_handle *handle;
int (*fcn)(struct di_devlink_handle *, void *, const char *);
static struct di_devlink_handle *handle_alloc(const char *dev_dir,
static int cache_alloc(struct di_devlink_handle *hdp);
static int open_db(struct di_devlink_handle *hdp, int flags);
static int invalid_db(struct di_devlink_handle *hdp, size_t fsize, long pg_sz);
static int read_nodes(struct di_devlink_handle *hdp, cache_node_t *pcnp,
static int read_minors(struct di_devlink_handle *hdp, cache_node_t *pcnp,
static int read_links(struct di_devlink_handle *hdp, cache_minor_t *pcmp,
static int init_hdr(struct di_devlink_handle *hdp, long page_sz,
static size_t size_db(struct di_devlink_handle *hdp, long page_sz,
static size_t seg_size(struct di_devlink_handle *hdp, int seg);
static cache_node_t *node_insert(struct di_devlink_handle *hdp,
static cache_minor_t *minor_insert(struct di_devlink_handle *hdp,
static cache_link_t *link_insert(struct di_devlink_handle *hdp,
static int write_nodes(struct di_devlink_handle *hdp, struct db_node *pdnp,
static int write_minors(struct di_devlink_handle *hdp, struct db_node *pdnp,
static int write_links(struct di_devlink_handle *hdp, struct db_minor *pdmp,
static void rm_link_from_hash(struct di_devlink_handle *hdp, cache_link_t *clp);
static uint32_t write_string(struct di_devlink_handle *hdp, const char *str,
static int close_db(struct di_devlink_handle *hdp);
static void cache_free(struct di_devlink_handle *hdp);
static void handle_free(struct di_devlink_handle **pp);
static void resolve_dangling_links(struct di_devlink_handle *hdp);
static void subtree_free(struct di_devlink_handle *hdp, cache_node_t **pp);
static void minor_free(struct di_devlink_handle *hdp, cache_minor_t **pp);
static void *lookup_node(struct di_devlink_handle *hdp, char *path,
static cache_link_t *add_link(struct di_devlink_handle *hdp, const char *link,
static void *lookup_minor(struct di_devlink_handle *hdp, const char *minor_path,
static void hash_insert(struct di_devlink_handle *hdp, cache_link_t *clp);
static uint_t hashfn(struct di_devlink_handle *hdp, const char *str);
static void get_db_path(struct di_devlink_handle *hdp, const char *fname,
static struct db_node *get_node(struct di_devlink_handle *hdp, uint32_t idx);
static struct db_node *set_node(struct di_devlink_handle *hdp, uint32_t idx);
static struct db_minor *get_minor(struct di_devlink_handle *hdp, uint32_t idx);
static struct db_minor *set_minor(struct di_devlink_handle *hdp, uint32_t idx);
static struct db_link *get_link(struct di_devlink_handle *hdp, uint32_t idx);
static struct db_link *set_link(struct di_devlink_handle *hdp, uint32_t idx);
static char *get_string(struct di_devlink_handle *hdp, uint32_t idx);
static char *set_string(struct di_devlink_handle *hdp, uint32_t idx);
static void *map_seg(struct di_devlink_handle *hdp, uint32_t idx, int prot,
static int walk_db(struct di_devlink_handle *hdp, link_desc_t *linkp);
static int walk_all_links(struct di_devlink_handle *hdp, link_desc_t *linkp);
static int walk_matching_links(struct di_devlink_handle *hdp,
static int visit_link(struct di_devlink_handle *hdp, link_desc_t *linkp,
static int cache_dev_link(struct di_devlink_handle *hdp, void *data,
static int walk_dev(struct di_devlink_handle *hdp, link_desc_t *linkp);
static int recurse_dev(struct di_devlink_handle *hdp, recurse_t *rp);
static int do_recurse(const char *dir, struct di_devlink_handle *hdp,
static void *get_last_node(struct di_devlink_handle *hdp, const char *path,
static void *get_last_minor(struct di_devlink_handle *hdp,
static void set_last_minor(struct di_devlink_handle *hdp, cache_minor_t *cmnp,
static int enter_db_lock(struct di_devlink_handle *hdp, const char *root_dir);
static void exit_db_lock(struct di_devlink_handle *hdp);
static const char *rel_path(struct di_devlink_handle *hdp, const char *path);
static cache_minor_t *link2minor(struct di_devlink_handle *hdp,
typedef struct di_devlink_handle *di_devlink_handle_t; /* devlink snapshot */