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

📄 adfs_fs.h

📁 GNU Hurd 源代码
💻 H
字号:
#ifndef _ADFS_FS_H#define _ADFS_FS_H#include <linux/types.h>/* * Structures of data on the disk *//* * Disc Record at disc address 0xc00 */struct adfs_discrecord {    unsigned char  log2secsize;    unsigned char  secspertrack;    unsigned char  heads;    unsigned char  density;    unsigned char  idlen;    unsigned char  log2bpmb;    unsigned char  skew;    unsigned char  bootoption;    unsigned char  lowsector;    unsigned char  nzones;    unsigned short zone_spare;    unsigned long  root;    unsigned long  disc_size;    unsigned short disc_id;    unsigned char  disc_name[10];    unsigned long  disc_type;    unsigned long  disc_size_high;    unsigned char  log2sharesize:4;    unsigned char  unused:4;    unsigned char  big_flag:1;};#define ADFS_DISCRECORD		(0xc00)#define ADFS_DR_OFFSET		(0x1c0)#define ADFS_DR_SIZE		 60#define ADFS_SUPER_MAGIC	 0xadf5#define ADFS_FREE_FRAG		 0#define ADFS_BAD_FRAG		 1#define ADFS_ROOT_FRAG		 2/* * Directory header */struct adfs_dirheader {	unsigned char startmasseq;	unsigned char startname[4];};#define ADFS_NEWDIR_SIZE	2048#define ADFS_OLDDIR_SIZE	1024#define ADFS_NUM_DIR_ENTRIES	77/* * Directory entries */struct adfs_direntry {	char dirobname[10];#define ADFS_NAME_LEN 10	__u8 dirload[4];	__u8 direxec[4];	__u8 dirlen[4];	__u8 dirinddiscadd[3];	__u8 newdiratts;#define ADFS_NDA_OWNER_READ	(1 << 0)#define ADFS_NDA_OWNER_WRITE	(1 << 1)#define ADFS_NDA_LOCKED		(1 << 2)#define ADFS_NDA_DIRECTORY	(1 << 3)#define ADFS_NDA_EXECUTE	(1 << 4)#define ADFS_NDA_PUBLIC_READ	(1 << 5)#define ADFS_NDA_PUBLIC_WRITE	(1 << 6)};#define ADFS_MAX_NAME_LEN	255struct adfs_idir_entry {	__u32		inode_no;			/* Address		*/	__u32		file_id;			/* file id		*/	__u32		name_len;			/* name length		*/	__u32		size;				/* size			*/	__u32		mtime;				/* modification time	*/	__u32		filetype;			/* RiscOS file type	*/	__u8		mode;				/* internal mode	*/	char		name[ADFS_MAX_NAME_LEN];	/* file name		*/};/* * Directory tail */union adfs_dirtail {	struct {		unsigned char dirlastmask;		char dirname[10];		unsigned char dirparent[3];		char dirtitle[19];		unsigned char reserved[14];		unsigned char endmasseq;		unsigned char endname[4];		unsigned char dircheckbyte;	} old;	struct {		unsigned char dirlastmask;		unsigned char reserved[2];		unsigned char dirparent[3];		char dirtitle[19];		char dirname[10];		unsigned char endmasseq;		unsigned char endname[4];		unsigned char dircheckbyte;	} new;};#ifdef __KERNEL__/* * Calculate the boot block checksum on an ADFS drive.  Note that this will * appear to be correct if the sector contains all zeros, so also check that * the disk size is non-zero!!! */extern inline int adfs_checkbblk(unsigned char *ptr){	unsigned int result = 0;	unsigned char *p = ptr + 511;	do {	        result = (result & 0xff) + (result >> 8);        	result = result + *--p;	} while (p != ptr);	return (result & 0xff) != ptr[511];}/* dir.c */extern unsigned int adfs_val (unsigned char *p, int len);extern int adfs_dir_read_parent (struct inode *inode, struct buffer_head **bhp);extern int adfs_dir_read (struct inode *inode, struct buffer_head **bhp);extern int adfs_dir_check (struct inode *inode, struct buffer_head **bhp,			   int buffers, union adfs_dirtail *dtp);extern void adfs_dir_free (struct buffer_head **bhp, int buffers);extern int adfs_dir_get (struct super_block *sb, struct buffer_head **bhp,			 int buffers, int pos, unsigned long parent_object_id,			 struct adfs_idir_entry *ide);extern int adfs_dir_find_entry (struct super_block *sb, struct buffer_head **bhp,				int buffers, unsigned int index,				struct adfs_idir_entry *ide);/* inode.c */extern int adfs_inode_validate (struct inode *inode);extern unsigned long adfs_inode_generate (unsigned long parent_id, int diridx);extern unsigned long adfs_inode_objid (struct inode *inode);extern unsigned int adfs_parent_bmap (struct inode *inode, int block);extern int adfs_bmap (struct inode *inode, int block);extern void adfs_read_inode (struct inode *inode);/* map.c */extern int adfs_map_lookup (struct super_block *sb, int frag_id, int offset);/* namei.c */extern struct dentry *adfs_lookup (struct inode *dir, struct dentry *dentry);/* super.c */extern int init_adfs_fs (void);extern void adfs_error (struct super_block *, const char *, const char *, ...);/* * Inodes and file operations *//* dir.c */extern struct inode_operations adfs_dir_inode_operations;/* file.c */extern struct inode_operations adfs_file_inode_operations;#endif#endif

⌨️ 快捷键说明

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