15b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
25b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  GRUB  --  GRand Unified Bootloader
35b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Copyright (C) 1999,2000,2001,2003   Free Software Foundation, Inc.
45b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
55b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  This program is free software; you can redistribute it and/or modify
65b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  it under the terms of the GNU General Public License as published by
75b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  the Free Software Foundation; either version 2 of the License, or
85b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  (at your option) any later version.
95b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  This program is distributed in the hope that it will be useful,
115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  but WITHOUT ANY WARRANTY; without even the implied warranty of
125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  GNU General Public License for more details.
145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  You should have received a copy of the GNU General Public License
165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  along with this program; if not, write to the Free Software
175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#ifndef _PC_SLICE_H
215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define _PC_SLICE_H
225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  These define the basic PC MBR sector characteristics
255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_MBR_SECTOR  0
285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_MBR_SIG_OFFSET  510
305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_MBR_SIGNATURE   0xaa55
315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_OFFSET 446
335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_MAX    4
345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Defines to guarantee structural alignment.
385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_MBR_CHECK_SIG(mbr_ptr) \
415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) \
425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   == PC_MBR_SIGNATURE )
435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_MBR_SIG(mbr_ptr) \
455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned short *) (((int) mbr_ptr) + PC_MBR_SIG_OFFSET) ) )
465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_FLAG(mbr_ptr, part) \
485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET \
495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_HEAD(mbr_ptr, part) \
525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 1 \
535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_SEC(mbr_ptr, part) \
565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 2 \
575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_CYL(mbr_ptr, part) \
605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 3 \
615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE(mbr_ptr, part) \
645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 4 \
655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_EHEAD(mbr_ptr, part) \
685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 5 \
695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_ESEC(mbr_ptr, part) \
725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 6 \
735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_ECYL(mbr_ptr, part) \
765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 7 \
775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_START(mbr_ptr, part) \
805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 8 \
815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_LENGTH(mbr_ptr, part) \
845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) mbr_ptr) + PC_SLICE_OFFSET + 12 \
855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  PC flag types are defined here.
905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_FLAG_NONE      0
935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_FLAG_BOOTABLE  0x80
945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Known PC partition types are defined here.
975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* This is not a flag actually, but used as if it were a flag.  */
1005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_HIDDEN_FLAG	0x10
1015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_NONE         	0
1035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FAT12        	1
1045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FAT16_LT32M  	4
1055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_EXTENDED     	5
1065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FAT16_GT32M  	6
1075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FAT32		0xb
1085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FAT32_LBA		0xc
1095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FAT16_LBA		0xe
1105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_WIN95_EXTENDED	0xf
1115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_EZD        	0x55
1125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_MINIX		0x80
1135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_LINUX_MINIX	0x81
1145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_EXT2FS       	0x83
1155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_LINUX_EXTENDED	0x85
1165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_VSTAFS		0x9e
1175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_DELL_UTIL		0xde
1185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_LINUX_RAID	0xfd
1195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* For convinience.  */
1225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* Check if TYPE is a FAT partition type. Clear the hidden flag before
1235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   the check, to allow the user to mount a hidden partition in GRUB.  */
1245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IS_PC_SLICE_TYPE_FAT(type)	\
1255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ({ int _type = (type) & ~PC_SLICE_TYPE_HIDDEN_FLAG; \
1265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     _type == PC_SLICE_TYPE_FAT12 \
1275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     || _type == PC_SLICE_TYPE_FAT16_LT32M \
1285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     || _type == PC_SLICE_TYPE_FAT16_GT32M \
1295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     || _type == PC_SLICE_TYPE_FAT16_LBA \
1305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     || _type == PC_SLICE_TYPE_FAT32 \
1315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     || _type == PC_SLICE_TYPE_FAT32_LBA \
1325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project     || _type == PC_SLICE_TYPE_DELL_UTIL; })
1335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IS_PC_SLICE_TYPE_EXTENDED(type)	\
1355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  (((type) == PC_SLICE_TYPE_EXTENDED)	\
1365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   || ((type) == PC_SLICE_TYPE_WIN95_EXTENDED)	\
1375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   || ((type) == PC_SLICE_TYPE_LINUX_EXTENDED))
1385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IS_PC_SLICE_TYPE_MINIX(type) \
1405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  (((type) == PC_SLICE_TYPE_MINIX)	\
1415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   || ((type) == PC_SLICE_TYPE_LINUX_MINIX))
1425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* these ones are special, as they use their own partitioning scheme
1445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   to subdivide the PC partitions from there.  */
1455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_FREEBSD		0xa5
1465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_OPENBSD		0xa6
1475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define PC_SLICE_TYPE_NETBSD		0xa9
1485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* For convenience.  */
1505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IS_PC_SLICE_TYPE_BSD_WITH_FS(type,fs)	\
1515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ((type) == (PC_SLICE_TYPE_FREEBSD | ((fs) << 8)) \
1525b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   || (type) == (PC_SLICE_TYPE_OPENBSD | ((fs) << 8)) \
1535b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   || (type) == (PC_SLICE_TYPE_NETBSD | (fs) << 8))
1545b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1555b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define IS_PC_SLICE_TYPE_BSD(type)	IS_PC_SLICE_TYPE_BSD_WITH_FS(type,0)
1565b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1575b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
1585b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  *BSD-style disklabel & partition definitions.
1595b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *
1605b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  This is a subdivided slice of type 'PC_SLICE_TYPE_BSD', so all of
1615b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  these, except where noted, are relative to the slice in question.
1625b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
1635b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1645b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_SECTOR 1
1655b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_MAGIC  0x82564557
1665b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1675b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_MAG_OFFSET 0
1685b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_MAG2_OFFSET 132
1695b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_NPARTS_OFFSET 138
1705b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_NPARTS_MAX 8
1715b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1725b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_OFFSET 148
1735b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1745b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1755b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/*
1765b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project *  Defines to guarantee structural alignment.
1775b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project */
1785b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1795b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_CHECK_MAG(l_ptr) \
1805b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) \
1815b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   == ( (unsigned long) BSD_LABEL_MAGIC ) )
1825b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1835b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_MAG(l_ptr) \
1845b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET) ) )
1855b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1865b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_DTYPE(l_ptr) \
1875b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_MAG_OFFSET + 4) ) )
1885b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1895b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_LABEL_NPARTS(l_ptr) \
1905b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned short *) (((int) l_ptr) + BSD_LABEL_NPARTS_OFFSET) ) )
1915b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1925b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_LENGTH(l_ptr, part) \
1935b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET \
1945b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
1955b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
1965b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_START(l_ptr, part) \
1975b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 4 \
1985b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
1995b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2005b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_FRAG_SIZE(l_ptr, part) \
2015b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned long *) (((int) l_ptr) + BSD_PART_OFFSET + 8 \
2025b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
2035b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2045b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_TYPE(l_ptr, part) \
2055b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 12 \
2065b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
2075b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2085b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_FRAGS_PER_BLOCK(l_ptr, part) \
2095b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned char *) (((int) l_ptr) + BSD_PART_OFFSET + 13 \
2105b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
2115b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2125b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define BSD_PART_EXTRA(l_ptr, part) \
2135b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project  ( *( (unsigned short *) (((int) l_ptr) + BSD_PART_OFFSET + 14 \
2145b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project			  + (part << 4)) ) )
2155b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2165b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2175b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* possible values for the "DISKTYPE"... all essentially irrelevant
2185b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project   except for DTYPE_SCSI */
2195b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_SMD               1	/* SMD, XSMD; VAX hp/up */
2205b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_MSCP              2	/* MSCP */
2215b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_DEC               3	/* other DEC (rk, rl) */
2225b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_SCSI              4	/* SCSI */
2235b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_ESDI              5	/* ESDI interface */
2245b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_ST506             6	/* ST506 etc. */
2255b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_HPIB              7	/* CS/80 on HP-IB */
2265b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_HPFL              8	/* HP Fiber-link */
2275b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define DTYPE_FLOPPY            10	/* floppy */
2285b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2295b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2305b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project/* possible values for the *BSD-style partition type */
2315b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_UNUSED	0	/* unused */
2325b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_SWAP		1	/* swap */
2335b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_V6		2	/* Sixth Edition */
2345b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_V7		3	/* Seventh Edition */
2355b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_SYSV		4	/* System V */
2365b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_V71K		5	/* V7 with 1K blocks (4.1, 2.9) */
2375b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_V8		6	/* Eighth Edition, 4K blocks */
2385b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_BSDFFS	7	/* 4.2BSD fast file system */
2395b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_MSDOS	8	/* MSDOS file system */
2405b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_BSDLFS	9	/* 4.4BSD log-structured file system */
2415b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_OTHER	10	/* in use, but unknown/unsupported */
2425b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_HPFS		11	/* OS/2 high-performance file system */
2435b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_ISO9660	12	/* ISO 9660, normally CD-ROM */
2445b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_BOOT		13	/* partition contains bootstrap */
2455b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_ADOS		14	/* AmigaDOS fast file system */
2465b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_HFS		15	/* Macintosh HFS */
2475b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_FILECORE	16	/* Acorn Filecore Filing System */
2485b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#define	FS_EXT2FS	17	/* Linux Extended 2 file system */
2495b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2505b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project
2515b1eb061628a97aae48a9c0bcaa96eb0bfa07aa4The Android Open Source Project#endif /* _PC_SLICE_H */
252