#ifndef _SYS_FS_BOOTFS_IMPL_H
#define _SYS_FS_BOOTFS_IMPL_H
#include <sys/types.h>
#include <sys/list.h>
#include <sys/avl.h>
#include <sys/vnode.h>
#include <sys/vfs_opreg.h>
#include <sys/kstat.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct bootfs_node {
char *bvn_name;
struct vnode *bvn_vnp;
avl_tree_t bvn_dir;
avl_node_t bvn_link;
list_node_t bvn_alink;
uint64_t bvn_addr;
uint64_t bvn_size;
struct bootfs_node *bvn_parent;
vattr_t bvn_attr;
} bootfs_node_t;
typedef struct bootfs_stat {
kstat_named_t bfss_nfiles;
kstat_named_t bfss_ndirs;
kstat_named_t bfss_nbytes;
kstat_named_t bfss_ndups;
kstat_named_t bfss_ndiscards;
} bootfs_stat_t;
typedef struct bootfs {
vfs_t *bfs_vfsp;
char *bfs_mntpath;
bootfs_node_t *bfs_rootvn;
kstat_t *bfs_kstat;
list_t bfs_nodes;
minor_t bfs_minor;
uint_t bfs_ninode;
bootfs_stat_t bfs_stat;
} bootfs_t;
extern void bootfs_construct(bootfs_t *);
extern void bootfs_destruct(bootfs_t *);
extern int bootfs_node_constructor(void *, void *, int);
extern void bootfs_node_destructor(void *, void *);
extern struct vnodeops *bootfs_vnodeops;
extern const fs_operation_def_t bootfs_vnodeops_template[];
extern kmem_cache_t *bootfs_node_cache;
extern major_t bootfs_major;
#ifdef __cplusplus
}
#endif
#endif