1 /*
   2  * This file and its contents are supplied under the terms of the
   3  * Common Development and Distribution License ("CDDL"), version 1.0.
   4  * You may only use this file in accordance with the terms of version
   5  * 1.0 of the CDDL.
   6  *
   7  * A full copy of the text of the CDDL should have accompanied this
   8  * source.  A copy of the CDDL is also available via the Internet at
   9  * http://www.illumos.org/license/CDDL.
  10  */
  11 
  12 /*
  13  * Copyright 2013 Damian Bogel.  All rights reserved.
  14  */
  15 
  16 #ifndef _FSH_IMPL_H
  17 #define _FSH_IMPL_H
  18 
  19 #include <sys/pathname.h>
  20 #include <sys/types.h>
  21 #include <sys/vfs.h>
  22 #include <sys/vnode.h>
  23 
  24 #ifdef __cplusplus
  25 extern "C" {
  26 #endif
  27 
  28 struct fsh_fsrecord;
  29 
  30 /* API for vnode.c and vfs.c only */
  31 /* vnode.c */
  32 extern int fsh_open(vnode_t **vpp, int mode, cred_t *cr, caller_context_t *ct);
  33 extern int fsh_close(vnode_t *vp, int flag, int count, offset_t offset,
  34                 cred_t *cr, caller_context_t *ct);
  35 extern int fsh_read(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr,
  36                 caller_context_t *ct);
  37 extern int fsh_write(vnode_t *vp, uio_t *uiop, int ioflag, cred_t *cr,
  38                 caller_context_t *ct);
  39 
  40 /* vfs.c */
  41 extern int fsh_mount(vfs_t *vfsp, vnode_t *mvp, struct mounta *uap,
  42                 cred_t *cr);
  43 extern int fsh_unmount(vfs_t *vfsp, int flag, cred_t *cr);
  44 extern int fsh_root(vfs_t *vfsp, vnode_t **vpp);
  45 extern int fsh_statfs(vfs_t *vfsp, statvfs64_t *sp);
  46 extern int fsh_vget(vfs_t *vfsp, vnode_t **vpp, fid_t *fidp);
  47 
  48 extern void fsh_exec_create_callbacks(vfs_t *vfsp);
  49 extern void fsh_exec_destroy_callbacks(vfs_t *vfsp);
  50 
  51 extern struct fsh_fsrecord * fsh_fsrec_create();
  52 extern void fsh_fsrec_destroy(struct fsh_fsrecord *fsrecp);
  53 
  54 #ifdef __cplusplus
  55 }
  56 #endif
  57 
  58 #endif /* _FSH_IMPL_H */