/*- * Copyright (c) 2002-2018 The UbixOS Project. * All rights reserved. * * This was developed by Christopher W. Olsen for the UbixOS Project. * * Redistribution and use in source and binary forms, with or without modification, are permitted * provided that the following conditions are met: * * 1) Redistributions of source code must retain the above copyright notice, this list of * conditions, the following disclaimer and the list of authors. * 2) Redistributions in binary form must reproduce the above copyright notice, this list of * conditions, the following disclaimer and the list of authors in the documentation and/or * other materials provided with the distribution. * 3) Neither the name of the UbixOS Project nor the names of its contributors may be used to * endorse or promote products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef _MOUNT_H #define _MOUNT_H #include <sys/types.h> #define MFSNAMELEN 16 /* length of type name including null */ #define MNAMELEN 88 /* size of on/from name bufs */ typedef struct fsid { int32_t val[2]; } fsid_t; /* filesystem id type */ struct statfs { uint32_t f_version; /* structure version number */ uint32_t f_type; /* type of filesystem */ u_int64_t f_flags; /* copy of mount exported flags */ u_int64_t f_bsize; /* filesystem fragment size */ u_int64_t f_iosize; /* optimal transfer block size */ u_int64_t f_blocks; /* total data blocks in filesystem */ u_int64_t f_bfree; /* free blocks in filesystem */ int64_t f_bavail; /* free blocks avail to non-superuser */ u_int64_t f_files; /* total file nodes in filesystem */ int64_t f_ffree; /* free nodes avail to non-superuser */ u_int64_t f_syncwrites; /* count of sync writes since mount */ u_int64_t f_asyncwrites; /* count of async writes since mount */ u_int64_t f_syncreads; /* count of sync reads since mount */ u_int64_t f_asyncreads; /* count of async reads since mount */ u_int64_t f_spare[10]; /* unused spare */ uint32_t f_namemax; /* maximum filename length */ uid_t f_owner; /* user that mounted the filesystem */ fsid_t f_fsid; /* filesystem id */ char f_charspare[80]; /* spare string space */ char f_fstypename[MFSNAMELEN]; /* filesystem type name */ char f_mntfromname[MNAMELEN]; /* mounted filesystem */ char f_mntonname[MNAMELEN]; /* directory on which mounted */ }; struct vfs_mountPoint { struct vfs_mountPoint *prev; struct vfs_mountPoint *next; struct fileSystem *fs; struct device_node *device; struct ubixDiskLabel *diskLabel; void *fsInfo; int partition; char mountPoint[1024]; char perms; }; int vfs_mount(int major, int minor, int partition, int fsType, char *mountPoint, char *perms); int vfs_addMount(struct vfs_mountPoint *mp); struct vfs_mountPoint *vfs_findMount(char *mountPoint); #endif /*** END ***/