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

📄 ufs2.h

📁 i386的bootloader源码grub
💻 H
📖 第 1 页 / 共 2 页
字号:
 */#define FSMAXSNAP 20	/* * Per cylinder group information; summarized in blocks allocated * from first cylinder group data blocks.  These blocks have to be * read in from fs_csaddr (size fs_cssize) in addition to the * super block. */struct csum {	int32_t	cs_ndir;		/* number of directories */	int32_t	cs_nbfree;		/* number of free blocks */	int32_t	cs_nifree;		/* number of free inodes */	int32_t	cs_nffree;		/* number of free frags */};struct csum_total {	int64_t	cs_ndir;		/* number of directories */	int64_t	cs_nbfree;		/* number of free blocks */	int64_t	cs_nifree;		/* number of free inodes */	int64_t	cs_nffree;		/* number of free frags */	int64_t	cs_numclusters;		/* number of free clusters */	int64_t	cs_spare[3];		/* future expansion */};/* * Super block for an FFS filesystem. */struct fs {	int32_t	 fs_firstfield;		/* historic filesystem linked list, */	int32_t	 fs_unused_1;		/*     used for incore super blocks */	int32_t	 fs_sblkno;		/* offset of super-block in filesys */	int32_t	 fs_cblkno;		/* offset of cyl-block in filesys */	int32_t	 fs_iblkno;		/* offset of inode-blocks in filesys */	int32_t	 fs_dblkno;		/* offset of first data after cg */	int32_t	 fs_old_cgoffset;	/* cylinder group offset in cylinder */	int32_t	 fs_old_cgmask;		/* used to calc mod fs_ntrak */	int32_t  fs_old_time;		/* last time written */	int32_t	 fs_old_size;		/* number of blocks in fs */	int32_t	 fs_old_dsize;		/* number of data blocks in fs */	int32_t	 fs_ncg;		/* number of cylinder groups */	int32_t	 fs_bsize;		/* size of basic blocks in fs */	int32_t	 fs_fsize;		/* size of frag blocks in fs */	int32_t	 fs_frag;		/* number of frags in a block in fs *//* these are configuration parameters */	int32_t	 fs_minfree;		/* minimum percentage of free blocks */	int32_t	 fs_old_rotdelay;	/* num of ms for optimal next block */	int32_t	 fs_old_rps;		/* disk revolutions per second *//* these fields can be computed from the others */	int32_t	 fs_bmask;		/* ``blkoff'' calc of blk offsets */	int32_t	 fs_fmask;		/* ``fragoff'' calc of frag offsets */	int32_t	 fs_bshift;		/* ``lblkno'' calc of logical blkno */	int32_t	 fs_fshift;		/* ``numfrags'' calc number of frags *//* these are configuration parameters */	int32_t	 fs_maxcontig;		/* max number of contiguous blks */	int32_t	 fs_maxbpg;		/* max number of blks per cyl group *//* these fields can be computed from the others */	int32_t	 fs_fragshift;		/* block to frag shift */	int32_t	 fs_fsbtodb;		/* fsbtodb and dbtofsb shift constant */	int32_t	 fs_sbsize;		/* actual size of super block */	int32_t	 fs_spare1[2];		/* old fs_csmask */					/* old fs_csshift */	int32_t	 fs_nindir;		/* value of NINDIR */	int32_t	 fs_inopb;		/* value of INOPB */	int32_t	 fs_old_nspf;		/* value of NSPF *//* yet another configuration parameter */	int32_t	 fs_optim;		/* optimization preference, see below */	int32_t	 fs_old_npsect;		/* # sectors/track including spares */	int32_t	 fs_old_interleave;	/* hardware sector interleave */	int32_t	 fs_old_trackskew;	/* sector 0 skew, per track */	int32_t	 fs_id[2];		/* unique filesystem id *//* sizes determined by number of cylinder groups and their sizes */	int32_t	 fs_old_csaddr;		/* blk addr of cyl grp summary area */	int32_t	 fs_cssize;		/* size of cyl grp summary area */	int32_t	 fs_cgsize;		/* cylinder group size */	int32_t	 fs_spare2;		/* old fs_ntrak */	int32_t	 fs_old_nsect;		/* sectors per track */	int32_t  fs_old_spc;		/* sectors per cylinder */	int32_t	 fs_old_ncyl;		/* cylinders in filesystem */	int32_t	 fs_old_cpg;		/* cylinders per group */	int32_t	 fs_ipg;		/* inodes per group */	int32_t	 fs_fpg;		/* blocks per group * fs_frag *//* this data must be re-computed after crashes */	struct	csum fs_old_cstotal;	/* cylinder summary information *//* these fields are cleared at mount time */	int8_t   fs_fmod;		/* super block modified flag */	int8_t   fs_clean;		/* filesystem is clean flag */	int8_t 	 fs_ronly;		/* mounted read-only flag */	int8_t   fs_old_flags;		/* old FS_ flags */	u_char	 fs_fsmnt[MAXMNTLEN];	/* name mounted on *//* these fields retain the current block allocation info */	int32_t	 fs_cgrotor;		/* last cg searched */	void 	*fs_ocsp[NOCSPTRS];	/* padding; was list of fs_cs buffers */	u_int8_t *fs_contigdirs;	/* # of contiguously allocated dirs */	struct	csum *fs_csp;		/* cg summary info buffer for fs_cs */	int32_t	*fs_maxcluster;		/* max cluster in each cyl group */	u_int	*fs_active;		/* used by snapshots to track fs */	int32_t	 fs_old_cpc;		/* cyl per cycle in postbl */	int32_t	 fs_maxbsize;		/* maximum blocking factor permitted */	int64_t	 fs_sparecon64[17];	/* old rotation block list head */	int64_t	 fs_sblockloc;		/* byte offset of standard superblock */	struct	csum_total fs_cstotal;	/* cylinder summary information */	ufs_time_t fs_time;		/* last time written */	int64_t	 fs_size;		/* number of blocks in fs */	int64_t	 fs_dsize;		/* number of data blocks in fs */	ufs2_daddr_t fs_csaddr;		/* blk addr of cyl grp summary area */	int64_t	 fs_pendingblocks;	/* blocks in process of being freed */	int32_t	 fs_pendinginodes;	/* inodes in process of being freed */	int32_t	 fs_snapinum[FSMAXSNAP];/* list of snapshot inode numbers */	int32_t	 fs_avgfilesize;	/* expected average file size */	int32_t	 fs_avgfpdir;		/* expected # of files per directory */	int32_t	 fs_save_cgsize;	/* save real cg size to use fs_bsize */	int32_t	 fs_sparecon32[26];	/* reserved for future constants */	int32_t  fs_flags;		/* see FS_ flags below */	int32_t	 fs_contigsumsize;	/* size of cluster summary array */ 	int32_t	 fs_maxsymlinklen;	/* max length of an internal symlink */	int32_t	 fs_old_inodefmt;	/* format of on-disk inodes */	u_int64_t fs_maxfilesize;	/* maximum representable file size */	int64_t	 fs_qbmask;		/* ~fs_bmask for use with 64-bit size */	int64_t	 fs_qfmask;		/* ~fs_fmask for use with 64-bit size */	int32_t	 fs_state;		/* validate fs_clean field */	int32_t	 fs_old_postblformat;	/* format of positional layout tables */	int32_t	 fs_old_nrpos;		/* number of rotational positions */	int32_t	 fs_spare5[2];		/* old fs_postbloff */					/* old fs_rotbloff */	int32_t	 fs_magic;		/* magic number */};/* * Filesystem identification */#define FS_UFS1_MAGIC   0x011954        /* UFS1 fast filesystem magic number */#define	FS_UFS2_MAGIC	0x19540119	/* UFS2 fast filesystem magic number *//* * Turn filesystem block numbers into disk block addresses. * This maps filesystem blocks to device size blocks. */#define fsbtodb(fs, b)	((b) << (fs)->fs_fsbtodb)#define	dbtofsb(fs, b)	((b) >> (fs)->fs_fsbtodb)/* * Cylinder group macros to locate things in cylinder groups. * They calc filesystem addresses of cylinder group data structures. */#define	cgbase(fs, c)	((ufs2_daddr_t)((fs)->fs_fpg * (c)))#define	cgimin(fs, c)	(cgstart(fs, c) + (fs)->fs_iblkno)	/* inode blk */#define cgstart(fs, c)							\       ((fs)->fs_magic == FS_UFS2_MAGIC ? cgbase(fs, c) :		\       (cgbase(fs, c) + (fs)->fs_old_cgoffset * ((c) & ~((fs)->fs_old_cgmask))))/* * Macros for handling inode numbers: *     inode number to filesystem block offset. *     inode number to cylinder group number. *     inode number to filesystem block address. */#define	ino_to_cg(fs, x)	((x) / (fs)->fs_ipg)#define	ino_to_fsba(fs, x)						\	((ufs2_daddr_t)(cgimin(fs, ino_to_cg(fs, x)) +			\	    (blkstofrags((fs), (((x) % (fs)->fs_ipg) / INOPB(fs))))))#define	ino_to_fsbo(fs, x)	((x) % INOPB(fs))/* * The following macros optimize certain frequently calculated * quantities by using shifts and masks in place of divisions * modulos and multiplications. */#define blkoff(fs, loc)		/* calculates (loc % fs->fs_bsize) */ \	((loc) & (fs)->fs_qbmask)/* Use this only when `blk' is known to be small, e.g., < NDADDR. */#define smalllblktosize(fs, blk)    /* calculates (blk * fs->fs_bsize) */ \	((blk) << (fs)->fs_bshift)#define lblkno(fs, loc)		/* calculates (loc / fs->fs_bsize) */ \	((loc) >> (fs)->fs_bshift)#define fragroundup(fs, size)	/* calculates roundup(size, fs->fs_fsize) */ \	(((size) + (fs)->fs_qfmask) & (fs)->fs_fmask)#define fragstoblks(fs, frags)	/* calculates (frags / fs->fs_frag) */ \	((frags) >> (fs)->fs_fragshift)#define blkstofrags(fs, blks)	/* calculates (blks * fs->fs_frag) */ \	((blks) << (fs)->fs_fragshift)#define fragnum(fs, fsb)	/* calculates (fsb % fs->fs_frag) */ \	((fsb) & ((fs)->fs_frag - 1))#define blknum(fs, fsb)		/* calculates rounddown(fsb, fs->fs_frag) */ \	((fsb) &~ ((fs)->fs_frag - 1))/* * Determining the size of a file block in the filesystem. */#define blksize(fs, ip, lbn) \	(((lbn) >= NDADDR || (ip)->i_size >= smalllblktosize(fs, (lbn) + 1)) \	    ? (fs)->fs_bsize \	    : (fragroundup(fs, blkoff(fs, (ip)->i_size))))#define sblksize(fs, size, lbn) \	(((lbn) >= NDADDR || (size) >= ((lbn) + 1) << (fs)->fs_bshift) \	  ? (fs)->fs_bsize \	  : (fragroundup(fs, blkoff(fs, (size)))))/* * Number of inodes in a secondary storage block/fragment. */#define	INOPB(fs)	((fs)->fs_inopb)#define	INOPF(fs)	((fs)->fs_inopb >> (fs)->fs_fragshift)/* * Number of indirects in a filesystem block. */#define	NINDIR(fs)	((fs)->fs_nindir)#define FS_UNCLEAN    0x01      /* filesystem not clean at mount */#define FS_DOSOFTDEP  0x02      /* filesystem using soft dependencies */#define FS_NEEDSFSCK  0x04      /* filesystem needs sync fsck before mount */#define FS_INDEXDIRS  0x08      /* kernel supports indexed directories */#define FS_ACLS       0x10      /* file system has ACLs enabled */#define FS_MULTILABEL 0x20      /* file system is MAC multi-label */#define FS_FLAGS_UPDATED 0x80   /* flags have been moved to new location */#endif /* _GRUB_UFS2_H_ */

⌨️ 快捷键说明

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