1*9663SMark.Logan@Sun.COM /* 2*9663SMark.Logan@Sun.COM libparted - a library for manipulating disk partitions 3*9663SMark.Logan@Sun.COM Copyright (C) 2005, 2007 Free Software Foundation, Inc. 4*9663SMark.Logan@Sun.COM 5*9663SMark.Logan@Sun.COM This program is free software; you can redistribute it and/or modify 6*9663SMark.Logan@Sun.COM it under the terms of the GNU General Public License as published by 7*9663SMark.Logan@Sun.COM the Free Software Foundation; either version 3 of the License, or 8*9663SMark.Logan@Sun.COM (at your option) any later version. 9*9663SMark.Logan@Sun.COM 10*9663SMark.Logan@Sun.COM This program is distributed in the hope that it will be useful, 11*9663SMark.Logan@Sun.COM but WITHOUT ANY WARRANTY; without even the implied warranty of 12*9663SMark.Logan@Sun.COM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*9663SMark.Logan@Sun.COM GNU General Public License for more details. 14*9663SMark.Logan@Sun.COM 15*9663SMark.Logan@Sun.COM You should have received a copy of the GNU General Public License 16*9663SMark.Logan@Sun.COM along with this program. If not, see <http://www.gnu.org/licenses/>. 17*9663SMark.Logan@Sun.COM */ 18*9663SMark.Logan@Sun.COM 19*9663SMark.Logan@Sun.COM /** 20*9663SMark.Logan@Sun.COM * \addtogroup PedUnit 21*9663SMark.Logan@Sun.COM * @{ 22*9663SMark.Logan@Sun.COM */ 23*9663SMark.Logan@Sun.COM 24*9663SMark.Logan@Sun.COM /** \file unit.h */ 25*9663SMark.Logan@Sun.COM 26*9663SMark.Logan@Sun.COM #ifndef PED_UNIT_H_INCLUDED 27*9663SMark.Logan@Sun.COM #define PED_UNIT_H_INCLUDED 28*9663SMark.Logan@Sun.COM 29*9663SMark.Logan@Sun.COM #include <parted/device.h> 30*9663SMark.Logan@Sun.COM 31*9663SMark.Logan@Sun.COM #include <stdarg.h> 32*9663SMark.Logan@Sun.COM #include <stdio.h> 33*9663SMark.Logan@Sun.COM 34*9663SMark.Logan@Sun.COM #define PED_SECTOR_SIZE_DEFAULT 512LL 35*9663SMark.Logan@Sun.COM #define PED_KILOBYTE_SIZE 1000LL 36*9663SMark.Logan@Sun.COM #define PED_MEGABYTE_SIZE 1000000LL 37*9663SMark.Logan@Sun.COM #define PED_GIGABYTE_SIZE 1000000000LL 38*9663SMark.Logan@Sun.COM #define PED_TERABYTE_SIZE 1000000000000LL 39*9663SMark.Logan@Sun.COM #define PED_KIBIBYTE_SIZE 1024LL 40*9663SMark.Logan@Sun.COM #define PED_MEBIBYTE_SIZE 1048576LL 41*9663SMark.Logan@Sun.COM #define PED_GIBIBYTE_SIZE 1073741824LL 42*9663SMark.Logan@Sun.COM #define PED_TEBIBYTE_SIZE 1099511627776LL 43*9663SMark.Logan@Sun.COM 44*9663SMark.Logan@Sun.COM /** 45*9663SMark.Logan@Sun.COM * Human-friendly unit for representation of a location within device 46*9663SMark.Logan@Sun.COM */ 47*9663SMark.Logan@Sun.COM typedef enum { 48*9663SMark.Logan@Sun.COM PED_UNIT_SECTOR, 49*9663SMark.Logan@Sun.COM PED_UNIT_BYTE, 50*9663SMark.Logan@Sun.COM PED_UNIT_KILOBYTE, 51*9663SMark.Logan@Sun.COM PED_UNIT_MEGABYTE, 52*9663SMark.Logan@Sun.COM PED_UNIT_GIGABYTE, 53*9663SMark.Logan@Sun.COM PED_UNIT_TERABYTE, 54*9663SMark.Logan@Sun.COM PED_UNIT_COMPACT, 55*9663SMark.Logan@Sun.COM PED_UNIT_CYLINDER, 56*9663SMark.Logan@Sun.COM PED_UNIT_CHS, 57*9663SMark.Logan@Sun.COM PED_UNIT_PERCENT, 58*9663SMark.Logan@Sun.COM PED_UNIT_KIBIBYTE, 59*9663SMark.Logan@Sun.COM PED_UNIT_MEBIBYTE, 60*9663SMark.Logan@Sun.COM PED_UNIT_GIBIBYTE, 61*9663SMark.Logan@Sun.COM PED_UNIT_TEBIBYTE 62*9663SMark.Logan@Sun.COM } PedUnit; 63*9663SMark.Logan@Sun.COM 64*9663SMark.Logan@Sun.COM #define PED_UNIT_FIRST PED_UNIT_SECTOR 65*9663SMark.Logan@Sun.COM #define PED_UNIT_LAST PED_UNIT_TEBIBYTE 66*9663SMark.Logan@Sun.COM 67*9663SMark.Logan@Sun.COM extern long long ped_unit_get_size (const PedDevice* dev, PedUnit unit); 68*9663SMark.Logan@Sun.COM extern const char* ped_unit_get_name (PedUnit unit); 69*9663SMark.Logan@Sun.COM extern PedUnit ped_unit_get_by_name (const char* unit_name); 70*9663SMark.Logan@Sun.COM 71*9663SMark.Logan@Sun.COM extern void ped_unit_set_default (PedUnit unit); 72*9663SMark.Logan@Sun.COM extern PedUnit ped_unit_get_default (); 73*9663SMark.Logan@Sun.COM 74*9663SMark.Logan@Sun.COM extern char* ped_unit_format_byte (const PedDevice* dev, PedSector byte); 75*9663SMark.Logan@Sun.COM extern char* ped_unit_format_custom_byte (const PedDevice* dev, PedSector byte, 76*9663SMark.Logan@Sun.COM PedUnit unit); 77*9663SMark.Logan@Sun.COM 78*9663SMark.Logan@Sun.COM extern char* ped_unit_format (const PedDevice* dev, PedSector sector); 79*9663SMark.Logan@Sun.COM extern char* ped_unit_format_custom (const PedDevice* dev, PedSector sector, 80*9663SMark.Logan@Sun.COM PedUnit unit); 81*9663SMark.Logan@Sun.COM 82*9663SMark.Logan@Sun.COM extern int ped_unit_parse (const char* str, const PedDevice* dev, 83*9663SMark.Logan@Sun.COM PedSector* sector, 84*9663SMark.Logan@Sun.COM PedGeometry** range); 85*9663SMark.Logan@Sun.COM extern int ped_unit_parse_custom (const char* str, const PedDevice* dev, 86*9663SMark.Logan@Sun.COM PedUnit unit, PedSector* sector, 87*9663SMark.Logan@Sun.COM PedGeometry** range); 88*9663SMark.Logan@Sun.COM 89*9663SMark.Logan@Sun.COM #endif /* PED_UNIT_H_INCLUDED */ 90*9663SMark.Logan@Sun.COM 91*9663SMark.Logan@Sun.COM /** @} */ 92*9663SMark.Logan@Sun.COM 93*9663SMark.Logan@Sun.COM 94