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

📄 pc_slice.h

📁 grub4dos-0.4.4-2008- 08-src.zip
💻 H
字号:
/* *  GRUB  --  GRand Unified Bootloader *  Copyright (C) 1999,2000,2001,2003   Free Software Foundation, Inc. * *  This program is free software; you can redistribute it and/or modify *  it under the terms of the GNU General Public License as published by *  the Free Software Foundation; either version 2 of the License, or *  (at your option) any later version. * *  This program is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU General Public License for more details. * *  You should have received a copy of the GNU General Public License *  along with this program; if not, write to the Free Software *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */#ifndef _PC_SLICE_H#define _PC_SLICE_H/* *  These define the basic PC MBR sector characteristics */#define PC_MBR_SECTOR  0#define PC_MBR_SIG_OFFSET  510#define PC_MBR_SIGNATURE   0xaa55#define PC_SLICE_OFFSET 446#define PC_SLICE_MAX    4/* *  Defines to guarantee structural alignment. */#define PC_MBR_CHECK_SIG(mbr_ptr) \  ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) \   == PC_MBR_SIGNATURE )#define PC_MBR_SIG(mbr_ptr) \  ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) )#define PC_SLICE_FLAG(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET \			  + (part << 4)) ) )#define PC_SLICE_HEAD(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 1 \			  + (part << 4)) ) )#define PC_SLICE_SEC(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 2 \			  + (part << 4)) ) )#define PC_SLICE_CYL(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 3 \			  + (part << 4)) ) )#define PC_SLICE_TYPE(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 4 \			  + (part << 4)) ) )#define PC_SLICE_EHEAD(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 5 \			  + (part << 4)) ) )#define PC_SLICE_ESEC(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 6 \			  + (part << 4)) ) )#define PC_SLICE_ECYL(mbr_ptr, part) \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 7 \			  + (part << 4)) ) )#define PC_SLICE_START(mbr_ptr, part) \  ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 8 \			  + (part << 4)) ) )#define PC_SLICE_LENGTH(mbr_ptr, part) \  ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 12 \			  + (part << 4)) ) )#define PC_SLICE_ENTRY_IS_EMPTY(mbr_ptr, part) \  ( ( ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET \			  + (part << 4)) ) ) == \  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 1 \			  + (part << 4)) ) ) ) && \  ( ( *( (unsigned short *) (((int) mbr_ptr) + PC_SLICE_OFFSET \			  + (part << 4)) ) ) == \  ( *( (unsigned short *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 2 \			  + (part << 4)) ) ) ) && \  ( ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET \			  + (part << 4)) ) ) == \  ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 4 \			  + (part << 4)) ) ) ) && \  ( ( *( (unsigned long long *) (((int) mbr_ptr) + PC_SLICE_OFFSET \			  + (part << 4)) ) ) == \  ( *( (unsigned long long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 8 \			  + (part << 4)) ) ) ) )/* *  PC flag types are defined here. */#define PC_SLICE_FLAG_NONE      0#define PC_SLICE_FLAG_BOOTABLE  0x80/* *  Known PC partition types are defined here. *//* This is not a flag actually, but used as if it were a flag.  */#define PC_SLICE_TYPE_HIDDEN_FLAG	0x10#define PC_SLICE_TYPE_NONE         	0#define PC_SLICE_TYPE_FAT12        	1#define PC_SLICE_TYPE_FAT16_LT32M  	4#define PC_SLICE_TYPE_EXTENDED     	5#define PC_SLICE_TYPE_EXTENDED_HIDDEN  	0x15#define PC_SLICE_TYPE_FAT16_GT32M  	6#define PC_SLICE_TYPE_FAT32		0xb#define PC_SLICE_TYPE_FAT32_LBA		0xc#define PC_SLICE_TYPE_FAT16_LBA		0xe#define PC_SLICE_TYPE_WIN95_EXTENDED	0xf#define PC_SLICE_TYPE_WIN95_EXT_HIDDEN	0x1f#define PC_SLICE_TYPE_EZD        	0x55#define PC_SLICE_TYPE_MINIX		0x80#define PC_SLICE_TYPE_LINUX_MINIX	0x81#define PC_SLICE_TYPE_EXT2FS       	0x83#define PC_SLICE_TYPE_LINUX_EXTENDED	0x85#define PC_SLICE_TYPE_VSTAFS		0x9e#define PC_SLICE_TYPE_DELL_UTIL		0xde#define PC_SLICE_TYPE_LINUX_RAID	0xfd/* For convinience.  *//* Check if TYPE is a FAT partition type. Clear the hidden flag before   the check, to allow the user to mount a hidden partition in GRUB.  */#define IS_PC_SLICE_TYPE_FAT(type)	\  ({ int _type = (type) & ~PC_SLICE_TYPE_HIDDEN_FLAG; \     _type == PC_SLICE_TYPE_FAT12 \     || _type == PC_SLICE_TYPE_FAT16_LT32M \     || _type == PC_SLICE_TYPE_FAT16_GT32M \     || _type == PC_SLICE_TYPE_FAT16_LBA \     || _type == PC_SLICE_TYPE_FAT32 \     || _type == PC_SLICE_TYPE_FAT32_LBA \     || _type == PC_SLICE_TYPE_DELL_UTIL; })#if 1#define IS_PC_SLICE_TYPE_EXTENDED(type)	\  ({ int _type = (type) & ~PC_SLICE_TYPE_HIDDEN_FLAG; \     _type == PC_SLICE_TYPE_EXTENDED \     || _type == PC_SLICE_TYPE_WIN95_EXTENDED \     || _type == PC_SLICE_TYPE_LINUX_EXTENDED; })#else#define IS_PC_SLICE_TYPE_EXTENDED(type)	\  (((type) == PC_SLICE_TYPE_EXTENDED)	\   || ((type) == PC_SLICE_TYPE_EXTENDED_HIDDEN)	\   || ((type) == PC_SLICE_TYPE_WIN95_EXTENDED)	\   || ((type) == PC_SLICE_TYPE_WIN95_EXT_HIDDEN)	\   || ((type) == PC_SLICE_TYPE_LINUX_EXTENDED))#endif#define IS_PC_SLICE_TYPE_MINIX(type) \  (((type) == PC_SLICE_TYPE_MINIX)	\   || ((type) == PC_SLICE_TYPE_LINUX_MINIX))/* these ones are special, as they use their own partitioning scheme   to subdivide the PC partitions from there.  */#define PC_SLICE_TYPE_FREEBSD		0xa5#define PC_SLICE_TYPE_OPENBSD		0xa6#define PC_SLICE_TYPE_NETBSD		0xa9/* For convenience.  */#define IS_PC_SLICE_TYPE_BSD_WITH_FS(type,fs)	\  ((type) == (PC_SLICE_TYPE_FREEBSD | ((fs) << 8)) \   || (type) == (PC_SLICE_TYPE_OPENBSD | ((fs) << 8)) \   || (type) == (PC_SLICE_TYPE_NETBSD | (fs) << 8))#define IS_PC_SLICE_TYPE_BSD(type)	IS_PC_SLICE_TYPE_BSD_WITH_FS(type,0)/* *  *BSD-style disklabel & partition definitions. * *  This is a subdivided slice of type 'PC_SLICE_TYPE_BSD', so all of *  these, except where noted, are relative to the slice in question. */#define BSD_LABEL_SECTOR 1#define BSD_LABEL_MAGIC  0x82564557#define BSD_LABEL_MAG_OFFSET 0#define BSD_LABEL_MAG2_OFFSET 132#define BSD_LABEL_NPARTS_OFFSET 138#define BSD_LABEL_NPARTS_MAX 8#define BSD_PART_OFFSET 148/* *  Defines to guarantee structural alignment. */#define BSD_LABEL_CHECK_MAG(l_ptr) \  ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) \   == ( (unsigned long) BSD_LABEL_MAGIC ) )#define BSD_LABEL_MAG(l_ptr) \  ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) )#define BSD_LABEL_DTYPE(l_ptr) \  ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET + 4) ) )#define BSD_LABEL_NPARTS(l_ptr) \  ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_NPARTS_OFFSET) ) )#define BSD_PART_LENGTH(l_ptr, part) \  ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET \			  + (part << 4)) ) )#define BSD_PART_START(l_ptr, part) \  ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 4 \			  + (part << 4)) ) )#define BSD_PART_FRAG_SIZE(l_ptr, part) \  ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 8 \			  + (part << 4)) ) )#define BSD_PART_TYPE(l_ptr, part) \  ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 12 \			  + (part << 4)) ) )#define BSD_PART_FRAGS_PER_BLOCK(l_ptr, part) \  ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 13 \			  + (part << 4)) ) )#define BSD_PART_EXTRA(l_ptr, part) \  ( *( (unsigned short *) (((int) l_ptr) + BSD_PART_OFFSET + 14 \			  + (part << 4)) ) )/* possible values for the "DISKTYPE"... all essentially irrelevant   except for DTYPE_SCSI */#define DTYPE_SMD               1	/* SMD, XSMD; VAX hp/up */#define DTYPE_MSCP              2	/* MSCP */#define DTYPE_DEC               3	/* other DEC (rk, rl) */#define DTYPE_SCSI              4	/* SCSI */#define DTYPE_ESDI              5	/* ESDI interface */#define DTYPE_ST506             6	/* ST506 etc. */#define DTYPE_HPIB              7	/* CS/80 on HP-IB */#define DTYPE_HPFL              8	/* HP Fiber-link */#define DTYPE_FLOPPY            10	/* floppy *//* possible values for the *BSD-style partition type */#define	FS_UNUSED	0	/* unused */#define	FS_SWAP		1	/* swap */#define	FS_V6		2	/* Sixth Edition */#define	FS_V7		3	/* Seventh Edition */#define	FS_SYSV		4	/* System V */#define	FS_V71K		5	/* V7 with 1K blocks (4.1, 2.9) */#define	FS_V8		6	/* Eighth Edition, 4K blocks */#define	FS_BSDFFS	7	/* 4.2BSD fast file system */#define	FS_MSDOS	8	/* MSDOS file system */#define	FS_BSDLFS	9	/* 4.4BSD log-structured file system */#define	FS_OTHER	10	/* in use, but unknown/unsupported */#define	FS_HPFS		11	/* OS/2 high-performance file system */#define	FS_ISO9660	12	/* ISO 9660, normally CD-ROM */#define	FS_BOOT		13	/* partition contains bootstrap */#define	FS_ADOS		14	/* AmigaDOS fast file system */#define	FS_HFS		15	/* Macintosh HFS */#define	FS_FILECORE	16	/* Acorn Filecore Filing System */#define	FS_EXT2FS	17	/* Linux Extended 2 file system */#endif /* _PC_SLICE_H */

⌨️ 快捷键说明

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