⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mount.h

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (c) 1989, 1991, 1993 *	The Regents of the University of California.  All rights reserved. * * 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 and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *	This product includes software developed by the University of *	California, Berkeley and its contributors. * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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. * *	@(#)mount.h	8.13 (Berkeley) 3/27/94 *	$Id: mount.h,v 1.1 1998/08/19 21:32:26 joel Exp $ */#ifndef _SYS_MOUNT_H_#define _SYS_MOUNT_H_#ifndef KERNEL#include <sys/ucred.h>#endif#include <sys/queue.h>typedef struct fsid { long val[2]; } fsid_t;	/* file system id type *//* * File identifier. * These are unique per filesystem on a single machine. */#define	MAXFIDSZ	16struct fid {	u_short		fid_len;		/* length of data in bytes */	u_short		fid_reserved;		/* force longword alignment */	char		fid_data[MAXFIDSZ];	/* data (variable length) */};/* * file system statistics */#define MNAMELEN 90	/* length of buffer for returned name */struct statfs {	long	f_spare2;		/* placeholder */	long	f_bsize;		/* fundamental file system block size */	long	f_iosize;		/* optimal transfer block size */	long	f_blocks;		/* total data blocks in file system */	long	f_bfree;		/* free blocks in fs */	long	f_bavail;		/* free blocks avail to non-superuser */	long	f_files;		/* total file nodes in file system */	long	f_ffree;		/* free file nodes in fs */	fsid_t	f_fsid;			/* file system id */	uid_t	f_owner;		/* user that mounted the filesystem */	int	f_type;			/* type of filesystem (see below) */	int	f_flags;		/* copy of mount flags */	long	f_spare[6];		/* spare for later */	char	f_mntonname[MNAMELEN];	/* directory on which mounted */	char	f_mntfromname[MNAMELEN];/* mounted filesystem */};/* * File system types. */#define	MOUNT_NONE	0#define	MOUNT_UFS	1	/* Fast Filesystem */#define	MOUNT_NFS	2	/* Sun-compatible Network Filesystem */#define	MOUNT_MFS	3	/* Memory-based Filesystem */#define	MOUNT_MSDOS	4	/* MS/DOS Filesystem */#define	MOUNT_LFS	5	/* Log-based Filesystem */#define	MOUNT_LOFS	6	/* Loopback Filesystem */#define	MOUNT_FDESC	7	/* File Descriptor Filesystem */#define	MOUNT_PORTAL	8	/* Portal Filesystem */#define MOUNT_NULL	9	/* Minimal Filesystem Layer */#define MOUNT_UMAP	10	/* User/Group Identifier Remapping Filesystem */#define MOUNT_KERNFS	11	/* Kernel Information Filesystem */#define MOUNT_PROCFS	12	/* /proc Filesystem */#define MOUNT_AFS	13	/* Andrew Filesystem */#define MOUNT_CD9660	14	/* ISO9660 (aka CDROM) Filesystem */#define MOUNT_UNION	15	/* Union (translucent) Filesystem */#define MOUNT_DEVFS	16	/* existing device Filesystem */#define	MOUNT_EXT2FS	17	/* Linux EXT2FS */#define MOUNT_TFS	18	/* Netcon Novell filesystem */#define	MOUNT_CFS	19	/* Coda filesystem */#define	MOUNT_MAXTYPE	19#define INITMOUNTNAMES { \	"none",		/*  0 MOUNT_NONE */ \	"ufs",		/*  1 MOUNT_UFS */ \	"nfs",		/*  2 MOUNT_NFS */ \	"mfs",		/*  3 MOUNT_MFS */ \	"msdos",	/*  4 MOUNT_MSDOS */ \	"lfs",		/*  5 MOUNT_LFS */ \	"lofs",		/*  6 MOUNT_LOFS */ \	"fdesc",	/*  7 MOUNT_FDESC */ \	"portal",	/*  8 MOUNT_PORTAL */ \	"null",		/*  9 MOUNT_NULL */ \	"umap",		/* 10 MOUNT_UMAP */ \	"kernfs",	/* 11 MOUNT_KERNFS */ \	"procfs",	/* 12 MOUNT_PROCFS */ \	"afs",		/* 13 MOUNT_AFS */ \	"cd9660",	/* 14 MOUNT_CD9660 */ \	"union",	/* 15 MOUNT_UNION */ \	"devfs",	/* 16 MOUNT_DEVFS */ \	"ext2fs",	/* 17 MOUNT_EXT2FS */ \	"tfs",		/* 18 MOUNT_TFS */ \	"cfs",		/* 19 MOUNT_CFS */ \	0,		/* 20 MOUNT_SPARE */ \}/* * Structure per mounted file system.  Each mounted file system has an * array of operations and an instance record.  The file systems are * put on a doubly linked list. */LIST_HEAD(vnodelst, vnode);struct mount {	CIRCLEQ_ENTRY(mount) mnt_list;		/* mount list */	struct vfsops	*mnt_op;		/* operations on fs */	struct vfsconf	*mnt_vfc;		/* configuration info */	struct vnode	*mnt_vnodecovered;	/* vnode we mounted on */	struct vnodelst	mnt_vnodelist;		/* list of vnodes this mount */	int		mnt_flag;		/* flags */	int		mnt_maxsymlinklen;	/* max size of short symlink */	struct statfs	mnt_stat;		/* cache of filesystem stats */	qaddr_t		mnt_data;		/* private data *//*	struct vfsconf	*mnt_vfc; */		/* configuration info */	time_t		mnt_time;		/* last time written*/};/* * Mount flags. * * Unmount uses MNT_FORCE flag. */#define	MNT_RDONLY	0x00000001	/* read only filesystem */#define	MNT_SYNCHRONOUS	0x00000002	/* file system written synchronously */#define	MNT_NOEXEC	0x00000004	/* can't exec from filesystem */#define	MNT_NOSUID	0x00000008	/* don't honor setuid bits on fs */#define	MNT_NODEV	0x00000010	/* don't interpret special files */#define	MNT_UNION	0x00000020	/* union with underlying filesystem */#define	MNT_ASYNC	0x00000040	/* file system written asynchronously */#define	MNT_NOATIME	0x10000000	/* Disable update of file access times *//* * exported mount flags. */#define	MNT_EXRDONLY	0x00000080	/* exported read only */#define	MNT_EXPORTED	0x00000100	/* file system is exported */#define	MNT_DEFEXPORTED	0x00000200	/* exported to the world */#define	MNT_EXPORTANON	0x00000400	/* use anon uid mapping for everyone */#define	MNT_EXKERB	0x00000800	/* exported with Kerberos uid mapping *//* * Flags set by internal operations. */#define	MNT_LOCAL	0x00001000	/* filesystem is stored locally */#define	MNT_QUOTA	0x00002000	/* quotas are enabled on filesystem */#define	MNT_ROOTFS	0x00004000	/* identifies the root filesystem */#define	MNT_USER	0x00008000	/* mounted by a user *//* * Mask of flags that are visible to statfs() */#define	MNT_VISFLAGMASK	(MNT_RDONLY|MNT_SYNCHRONOUS|MNT_NOEXEC|MNT_NOSUID| \			 MNT_NODEV|MNT_UNION|MNT_ASYNC|MNT_EXRDONLY|MNT_EXPORTED| \			 MNT_DEFEXPORTED|MNT_EXPORTANON|MNT_EXKERB|MNT_LOCAL| \			 MNT_QUOTA|MNT_ROOTFS|MNT_USER|MNT_NOATIME)/* * filesystem control flags. * * MNT_MLOCK lock the mount entry so that name lookup cannot proceed * past the mount point.  This keeps the subtree stable during mounts * and unmounts. */#define	MNT_UPDATE	0x00010000	/* not a real mount, just an update */#define	MNT_DELEXPORT	0x00020000	/* delete export host lists */#define	MNT_RELOAD	0x00040000	/* reload filesystem data */#define	MNT_FORCE	0x00080000	/* force unmount or readonly change */#define	MNT_MLOCK	0x00100000	/* lock so that subtree is stable */#define	MNT_MWAIT	0x00200000	/* someone is waiting for lock */#define MNT_MPBUSY	0x00400000	/* scan of mount point in progress */#define MNT_MPWANT	0x00800000	/* waiting for mount point */#define MNT_UNMOUNT	0x01000000	/* unmount in progress */#define MNT_WANTRDWR	0x02000000	/* want upgrade to read/write *//* * used to get configured filesystems information */#define VFS_MAXNAMELEN 32struct vfsconf {	void *vfc_vfsops;	char vfc_name[VFS_MAXNAMELEN];	int vfc_index;	int vfc_refcount;	int vfc_flags;};/* * NB: these flags refer to IMPLEMENTATION properties, not properties of * any actual mounts; i.e., it does not make sense to change the flags. */#define	VFCF_STATIC	0x00000001	/* statically compiled into kernel */#define	VFCF_NETWORK	0x00000002	/* may get data over the network */#define	VFCF_READONLY	0x00000004	/* writes are not implemented */#define VFCF_SYNTHETIC	0x00000008	/* data does not represent real files */#define	VFCF_LOOPBACK	0x00000010	/* aliases some other mounted FS */#define	VFCF_UNICODE	0x00000020	/* stores file names as Unicode*//* * Operations supported on mounted file system. */#ifdef KERNELextern	int	doforce;	/* Flag to permit forcible unmounting. */extern struct vfsconf void_vfsconf;extern struct vfsconf *vfsconf[];#ifdef __STDC__struct nameidata;struct mbuf;#endifstruct vfsops {	int	(*vfs_mount)	__P((struct mount *mp, char *path, caddr_t data,				    struct nameidata *ndp, struct proc *p));	int	(*vfs_start)	__P((struct mount *mp, int flags,				    struct proc *p));	int	(*vfs_unmount)	__P((struct mount *mp, int mntflags,				    struct proc *p));	int	(*vfs_root)	__P((struct mount *mp, struct vnode **vpp));	int	(*vfs_quotactl)	__P((struct mount *mp, int cmds, uid_t uid,				    caddr_t arg, struct proc *p));	int	(*vfs_statfs)	__P((struct mount *mp, struct statfs *sbp,				    struct proc *p));	int	(*vfs_sync)	__P((struct mount *mp, int waitfor,				    struct ucred *cred, struct proc *p));	int	(*vfs_vget)	__P((struct mount *mp, ino_t ino,				    struct vnode **vpp));	int	(*vfs_fhtovp)	__P((struct mount *mp, struct fid *fhp,				    struct mbuf *nam, struct vnode **vpp,				    int *exflagsp, struct ucred **credanonp));	int	(*vfs_vptofh)	__P((struct vnode *vp, struct fid *fhp));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -