1*9663SMark.Logan@Sun.COM /* 2*9663SMark.Logan@Sun.COM libparted - a library for manipulating disk partitions 3*9663SMark.Logan@Sun.COM Copyright (C) 1998-2001, 2005, 2006, 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 PedGeometry 21*9663SMark.Logan@Sun.COM * @{ 22*9663SMark.Logan@Sun.COM */ 23*9663SMark.Logan@Sun.COM 24*9663SMark.Logan@Sun.COM /** \file geom.h */ 25*9663SMark.Logan@Sun.COM 26*9663SMark.Logan@Sun.COM #ifndef PED_GEOM_H_INCLUDED 27*9663SMark.Logan@Sun.COM #define PED_GEOM_H_INCLUDED 28*9663SMark.Logan@Sun.COM 29*9663SMark.Logan@Sun.COM #include <parted/device.h> 30*9663SMark.Logan@Sun.COM #include <parted/timer.h> 31*9663SMark.Logan@Sun.COM 32*9663SMark.Logan@Sun.COM typedef struct _PedGeometry PedGeometry; 33*9663SMark.Logan@Sun.COM 34*9663SMark.Logan@Sun.COM /** 35*9663SMark.Logan@Sun.COM * Geometry of the partition 36*9663SMark.Logan@Sun.COM */ 37*9663SMark.Logan@Sun.COM struct _PedGeometry { 38*9663SMark.Logan@Sun.COM PedDevice* dev; 39*9663SMark.Logan@Sun.COM PedSector start; 40*9663SMark.Logan@Sun.COM PedSector length; 41*9663SMark.Logan@Sun.COM PedSector end; 42*9663SMark.Logan@Sun.COM }; 43*9663SMark.Logan@Sun.COM 44*9663SMark.Logan@Sun.COM extern int ped_geometry_init (PedGeometry* geom, const PedDevice* dev, 45*9663SMark.Logan@Sun.COM PedSector start, PedSector length); 46*9663SMark.Logan@Sun.COM extern PedGeometry* ped_geometry_new (const PedDevice* dev, PedSector start, 47*9663SMark.Logan@Sun.COM PedSector length); 48*9663SMark.Logan@Sun.COM extern PedGeometry* ped_geometry_duplicate (const PedGeometry* geom); 49*9663SMark.Logan@Sun.COM extern PedGeometry* ped_geometry_intersect (const PedGeometry* a, 50*9663SMark.Logan@Sun.COM const PedGeometry* b); 51*9663SMark.Logan@Sun.COM extern void ped_geometry_destroy (PedGeometry* geom); 52*9663SMark.Logan@Sun.COM extern int ped_geometry_set (PedGeometry* geom, PedSector start, 53*9663SMark.Logan@Sun.COM PedSector length); 54*9663SMark.Logan@Sun.COM extern int ped_geometry_set_start (PedGeometry* geom, PedSector start); 55*9663SMark.Logan@Sun.COM extern int ped_geometry_set_end (PedGeometry* geom, PedSector end); 56*9663SMark.Logan@Sun.COM extern int ped_geometry_test_overlap (const PedGeometry* a, 57*9663SMark.Logan@Sun.COM const PedGeometry* b); 58*9663SMark.Logan@Sun.COM extern int ped_geometry_test_inside (const PedGeometry* a, 59*9663SMark.Logan@Sun.COM const PedGeometry* b); 60*9663SMark.Logan@Sun.COM extern int ped_geometry_test_equal (const PedGeometry* a, const PedGeometry* b); 61*9663SMark.Logan@Sun.COM extern int ped_geometry_test_sector_inside (const PedGeometry* geom, 62*9663SMark.Logan@Sun.COM PedSector sect); 63*9663SMark.Logan@Sun.COM 64*9663SMark.Logan@Sun.COM extern int ped_geometry_read (const PedGeometry* geom, void* buffer, 65*9663SMark.Logan@Sun.COM PedSector offset, PedSector count); 66*9663SMark.Logan@Sun.COM extern int ped_geometry_write (PedGeometry* geom, const void* buffer, 67*9663SMark.Logan@Sun.COM PedSector offset, PedSector count); 68*9663SMark.Logan@Sun.COM extern PedSector ped_geometry_check (PedGeometry* geom, void* buffer, 69*9663SMark.Logan@Sun.COM PedSector buffer_size, PedSector offset, 70*9663SMark.Logan@Sun.COM PedSector granularity, PedSector count, 71*9663SMark.Logan@Sun.COM PedTimer* timer); 72*9663SMark.Logan@Sun.COM extern int ped_geometry_sync (PedGeometry* geom); 73*9663SMark.Logan@Sun.COM extern int ped_geometry_sync_fast (PedGeometry* geom); 74*9663SMark.Logan@Sun.COM 75*9663SMark.Logan@Sun.COM /* returns -1 if "sector" is not within dest's space. */ 76*9663SMark.Logan@Sun.COM extern PedSector ped_geometry_map (const PedGeometry* dst, 77*9663SMark.Logan@Sun.COM const PedGeometry* src, 78*9663SMark.Logan@Sun.COM PedSector sector); 79*9663SMark.Logan@Sun.COM 80*9663SMark.Logan@Sun.COM #endif /* PED_GEOM_H_INCLUDED */ 81*9663SMark.Logan@Sun.COM 82*9663SMark.Logan@Sun.COM /** @} */ 83*9663SMark.Logan@Sun.COM 84