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