xref: /onnv-gate/usr/src/lib/libparted/common/include/parted/disk.h (revision 9663:ace9a2ac3683)
1*9663SMark.Logan@Sun.COM /*
2*9663SMark.Logan@Sun.COM     libparted - a library for manipulating disk partitions
3*9663SMark.Logan@Sun.COM     Copyright (C) 1999, 2000, 2001, 2002, 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 PedDisk
21*9663SMark.Logan@Sun.COM  * @{
22*9663SMark.Logan@Sun.COM  */
23*9663SMark.Logan@Sun.COM 
24*9663SMark.Logan@Sun.COM /** \file disk.h */
25*9663SMark.Logan@Sun.COM 
26*9663SMark.Logan@Sun.COM #ifndef PED_DISK_H_INCLUDED
27*9663SMark.Logan@Sun.COM #define PED_DISK_H_INCLUDED
28*9663SMark.Logan@Sun.COM 
29*9663SMark.Logan@Sun.COM /**
30*9663SMark.Logan@Sun.COM  * Partition types
31*9663SMark.Logan@Sun.COM  */
32*9663SMark.Logan@Sun.COM enum _PedPartitionType {
33*9663SMark.Logan@Sun.COM         PED_PARTITION_NORMAL            = 0x00,
34*9663SMark.Logan@Sun.COM         PED_PARTITION_LOGICAL           = 0x01,
35*9663SMark.Logan@Sun.COM         PED_PARTITION_EXTENDED          = 0x02,
36*9663SMark.Logan@Sun.COM         PED_PARTITION_FREESPACE         = 0x04,
37*9663SMark.Logan@Sun.COM         PED_PARTITION_METADATA          = 0x08,
38*9663SMark.Logan@Sun.COM         PED_PARTITION_PROTECTED         = 0x10
39*9663SMark.Logan@Sun.COM };
40*9663SMark.Logan@Sun.COM 
41*9663SMark.Logan@Sun.COM /**
42*9663SMark.Logan@Sun.COM  * Partition flags.
43*9663SMark.Logan@Sun.COM  */
44*9663SMark.Logan@Sun.COM enum _PedPartitionFlag {
45*9663SMark.Logan@Sun.COM         PED_PARTITION_BOOT=1,
46*9663SMark.Logan@Sun.COM         PED_PARTITION_ROOT=2,
47*9663SMark.Logan@Sun.COM         PED_PARTITION_SWAP=3,
48*9663SMark.Logan@Sun.COM         PED_PARTITION_HIDDEN=4,
49*9663SMark.Logan@Sun.COM         PED_PARTITION_RAID=5,
50*9663SMark.Logan@Sun.COM         PED_PARTITION_LVM=6,
51*9663SMark.Logan@Sun.COM         PED_PARTITION_LBA=7,
52*9663SMark.Logan@Sun.COM         PED_PARTITION_HPSERVICE=8,
53*9663SMark.Logan@Sun.COM         PED_PARTITION_PALO=9,
54*9663SMark.Logan@Sun.COM         PED_PARTITION_PREP=10,
55*9663SMark.Logan@Sun.COM         PED_PARTITION_MSFT_RESERVED=11
56*9663SMark.Logan@Sun.COM };
57*9663SMark.Logan@Sun.COM #define PED_PARTITION_FIRST_FLAG        PED_PARTITION_BOOT
58*9663SMark.Logan@Sun.COM #define PED_PARTITION_LAST_FLAG         PED_PARTITION_MSFT_RESERVED
59*9663SMark.Logan@Sun.COM 
60*9663SMark.Logan@Sun.COM enum _PedDiskTypeFeature {
61*9663SMark.Logan@Sun.COM         PED_DISK_TYPE_EXTENDED=1,       /**< supports extended partitions */
62*9663SMark.Logan@Sun.COM         PED_DISK_TYPE_PARTITION_NAME=2  /**< supports partition names */
63*9663SMark.Logan@Sun.COM };
64*9663SMark.Logan@Sun.COM #define PED_DISK_TYPE_FIRST_FEATURE    PED_DISK_TYPE_EXTENDED
65*9663SMark.Logan@Sun.COM #define PED_DISK_TYPE_LAST_FEATURE     PED_DISK_TYPE_PARTITION_NAME
66*9663SMark.Logan@Sun.COM 
67*9663SMark.Logan@Sun.COM struct _PedDisk;
68*9663SMark.Logan@Sun.COM struct _PedPartition;
69*9663SMark.Logan@Sun.COM struct _PedDiskOps;
70*9663SMark.Logan@Sun.COM struct _PedDiskType;
71*9663SMark.Logan@Sun.COM struct _PedDiskArchOps;
72*9663SMark.Logan@Sun.COM 
73*9663SMark.Logan@Sun.COM typedef enum _PedPartitionType          PedPartitionType;
74*9663SMark.Logan@Sun.COM typedef enum _PedPartitionFlag          PedPartitionFlag;
75*9663SMark.Logan@Sun.COM typedef enum _PedDiskTypeFeature        PedDiskTypeFeature;
76*9663SMark.Logan@Sun.COM typedef struct _PedDisk                 PedDisk;
77*9663SMark.Logan@Sun.COM typedef struct _PedPartition            PedPartition;
78*9663SMark.Logan@Sun.COM typedef const struct _PedDiskOps        PedDiskOps;
79*9663SMark.Logan@Sun.COM typedef struct _PedDiskType             PedDiskType;
80*9663SMark.Logan@Sun.COM typedef const struct _PedDiskArchOps    PedDiskArchOps;
81*9663SMark.Logan@Sun.COM 
82*9663SMark.Logan@Sun.COM #include <parted/device.h>
83*9663SMark.Logan@Sun.COM #include <parted/filesys.h>
84*9663SMark.Logan@Sun.COM #include <parted/natmath.h>
85*9663SMark.Logan@Sun.COM #include <parted/geom.h>
86*9663SMark.Logan@Sun.COM 
87*9663SMark.Logan@Sun.COM /** @} */
88*9663SMark.Logan@Sun.COM 
89*9663SMark.Logan@Sun.COM /**
90*9663SMark.Logan@Sun.COM  * \addtogroup PedPartition
91*9663SMark.Logan@Sun.COM  *
92*9663SMark.Logan@Sun.COM  * @{
93*9663SMark.Logan@Sun.COM  */
94*9663SMark.Logan@Sun.COM 
95*9663SMark.Logan@Sun.COM /** \file disk.h */
96*9663SMark.Logan@Sun.COM 
97*9663SMark.Logan@Sun.COM /**
98*9663SMark.Logan@Sun.COM  * PedPartition structure represents a partition.
99*9663SMark.Logan@Sun.COM  */
100*9663SMark.Logan@Sun.COM struct _PedPartition {
101*9663SMark.Logan@Sun.COM         PedPartition*           prev;
102*9663SMark.Logan@Sun.COM         PedPartition*           next;
103*9663SMark.Logan@Sun.COM 
104*9663SMark.Logan@Sun.COM         /**< the partition table of the partition */
105*9663SMark.Logan@Sun.COM         PedDisk*                disk;
106*9663SMark.Logan@Sun.COM         PedGeometry             geom;	/**< geometry of the partition */
107*9663SMark.Logan@Sun.COM 
108*9663SMark.Logan@Sun.COM         /**< the partition number:  In Linux, this is the
109*9663SMark.Logan@Sun.COM              same as the minor number. No assumption
110*9663SMark.Logan@Sun.COM              should be made about "num" and "type"
111*9663SMark.Logan@Sun.COM              - different disk labels have different rules. */
112*9663SMark.Logan@Sun.COM 
113*9663SMark.Logan@Sun.COM         int                     num;
114*9663SMark.Logan@Sun.COM         PedPartitionType        type;	/**< the type of partition: a bit field of
115*9663SMark.Logan@Sun.COM 					  	PED_PARTITION_LOGICAL, PED_PARTITION_EXTENDED,
116*9663SMark.Logan@Sun.COM 						PED_PARTITION_METADATA
117*9663SMark.Logan@Sun.COM 						and PED_PARTITION_FREESPACE.
118*9663SMark.Logan@Sun.COM 						Both the first two, and the last two are
119*9663SMark.Logan@Sun.COM 						mutually exclusive.
120*9663SMark.Logan@Sun.COM 							An extended partition is a primary
121*9663SMark.Logan@Sun.COM 						partition that may contain logical partitions.
122*9663SMark.Logan@Sun.COM 						There is at most one extended partition on
123*9663SMark.Logan@Sun.COM 						a disk.
124*9663SMark.Logan@Sun.COM 							A logical partition is like a primary
125*9663SMark.Logan@Sun.COM 						partition, except it's inside an extended
126*9663SMark.Logan@Sun.COM 						partition. Internally, pseudo partitions are
127*9663SMark.Logan@Sun.COM 						allocated to represent free space, or disk
128*9663SMark.Logan@Sun.COM 						label meta-data.  These have the
129*9663SMark.Logan@Sun.COM 						PED_PARTITION_FREESPACE or
130*9663SMark.Logan@Sun.COM 						PED_PARTITION_METADATA bit set. */
131*9663SMark.Logan@Sun.COM 
132*9663SMark.Logan@Sun.COM         /**< The type of file system on the partition. NULL if unknown. */
133*9663SMark.Logan@Sun.COM         const PedFileSystemType* fs_type;
134*9663SMark.Logan@Sun.COM 
135*9663SMark.Logan@Sun.COM         /**< Only used for an extended partition.  The list of logical
136*9663SMark.Logan@Sun.COM              partitions (and free space and metadata within the extended
137*9663SMark.Logan@Sun.COM              partition). */
138*9663SMark.Logan@Sun.COM         PedPartition*           part_list;
139*9663SMark.Logan@Sun.COM 
140*9663SMark.Logan@Sun.COM         void*                   disk_specific;
141*9663SMark.Logan@Sun.COM };
142*9663SMark.Logan@Sun.COM 
143*9663SMark.Logan@Sun.COM /** @} */
144*9663SMark.Logan@Sun.COM 
145*9663SMark.Logan@Sun.COM /**
146*9663SMark.Logan@Sun.COM  * \addtogroup PedDisk
147*9663SMark.Logan@Sun.COM  * @{
148*9663SMark.Logan@Sun.COM  */
149*9663SMark.Logan@Sun.COM 
150*9663SMark.Logan@Sun.COM /**
151*9663SMark.Logan@Sun.COM  * Represents a disk label (partition table).
152*9663SMark.Logan@Sun.COM  */
153*9663SMark.Logan@Sun.COM struct _PedDisk {
154*9663SMark.Logan@Sun.COM         PedDevice*          dev;         /**< the device where the
155*9663SMark.Logan@Sun.COM                                               partition table lies */
156*9663SMark.Logan@Sun.COM         const PedDiskType*  type;        /**< type of disk label */
157*9663SMark.Logan@Sun.COM         const int*          block_sizes; /**< block sizes supported
158*9663SMark.Logan@Sun.COM                                               by this label */
159*9663SMark.Logan@Sun.COM         PedPartition*       part_list;   /**< list of partitions. Access with
160*9663SMark.Logan@Sun.COM                                               ped_disk_next_partition() */
161*9663SMark.Logan@Sun.COM 
162*9663SMark.Logan@Sun.COM         void*               disk_specific;
163*9663SMark.Logan@Sun.COM 
164*9663SMark.Logan@Sun.COM /* office use only ;-) */
165*9663SMark.Logan@Sun.COM         int                 needs_clobber;      /**< clobber before write? */
166*9663SMark.Logan@Sun.COM         int                 update_mode;        /**< mode without free/metadata
167*9663SMark.Logan@Sun.COM                                                    partitions, for easier
168*9663SMark.Logan@Sun.COM                                                    update */
169*9663SMark.Logan@Sun.COM };
170*9663SMark.Logan@Sun.COM 
171*9663SMark.Logan@Sun.COM struct _PedDiskOps {
172*9663SMark.Logan@Sun.COM         /* disk label operations */
173*9663SMark.Logan@Sun.COM         int (*probe) (const PedDevice *dev);
174*9663SMark.Logan@Sun.COM         int (*clobber) (PedDevice* dev);
175*9663SMark.Logan@Sun.COM         PedDisk* (*alloc) (const PedDevice* dev);
176*9663SMark.Logan@Sun.COM         PedDisk* (*duplicate) (const PedDisk* disk);
177*9663SMark.Logan@Sun.COM         void (*free) (PedDisk* disk);
178*9663SMark.Logan@Sun.COM         int (*read) (PedDisk* disk);
179*9663SMark.Logan@Sun.COM         int (*write) (const PedDisk* disk);
180*9663SMark.Logan@Sun.COM         /** \todo add label guessing op here */
181*9663SMark.Logan@Sun.COM 
182*9663SMark.Logan@Sun.COM         /* partition operations */
183*9663SMark.Logan@Sun.COM         PedPartition* (*partition_new) (
184*9663SMark.Logan@Sun.COM                 const PedDisk* disk,
185*9663SMark.Logan@Sun.COM                 PedPartitionType part_type,
186*9663SMark.Logan@Sun.COM                 const PedFileSystemType* fs_type,
187*9663SMark.Logan@Sun.COM                 PedSector start,
188*9663SMark.Logan@Sun.COM                 PedSector end);
189*9663SMark.Logan@Sun.COM         PedPartition* (*partition_duplicate) (const PedPartition* part);
190*9663SMark.Logan@Sun.COM         void (*partition_destroy) (PedPartition* part);
191*9663SMark.Logan@Sun.COM         int (*partition_set_system) (PedPartition* part,
192*9663SMark.Logan@Sun.COM                                      const PedFileSystemType* fs_type);
193*9663SMark.Logan@Sun.COM         int (*partition_set_flag) (
194*9663SMark.Logan@Sun.COM                 PedPartition* part,
195*9663SMark.Logan@Sun.COM                 PedPartitionFlag flag,
196*9663SMark.Logan@Sun.COM                 int state);
197*9663SMark.Logan@Sun.COM         int (*partition_get_flag) (
198*9663SMark.Logan@Sun.COM                 const PedPartition* part,
199*9663SMark.Logan@Sun.COM                 PedPartitionFlag flag);
200*9663SMark.Logan@Sun.COM         int (*partition_is_flag_available) (
201*9663SMark.Logan@Sun.COM                 const PedPartition* part,
202*9663SMark.Logan@Sun.COM                 PedPartitionFlag flag);
203*9663SMark.Logan@Sun.COM         void (*partition_set_name) (PedPartition* part, const char* name);
204*9663SMark.Logan@Sun.COM         const char* (*partition_get_name) (const PedPartition* part);
205*9663SMark.Logan@Sun.COM         int (*partition_align) (PedPartition* part,
206*9663SMark.Logan@Sun.COM                                 const PedConstraint* constraint);
207*9663SMark.Logan@Sun.COM         int (*partition_enumerate) (PedPartition* part);
208*9663SMark.Logan@Sun.COM 
209*9663SMark.Logan@Sun.COM         /* other */
210*9663SMark.Logan@Sun.COM         int (*alloc_metadata) (PedDisk* disk);
211*9663SMark.Logan@Sun.COM         int (*get_max_primary_partition_count) (const PedDisk* disk);
212*9663SMark.Logan@Sun.COM };
213*9663SMark.Logan@Sun.COM 
214*9663SMark.Logan@Sun.COM struct _PedDiskType {
215*9663SMark.Logan@Sun.COM         PedDiskType*            next;
216*9663SMark.Logan@Sun.COM         const char*             name; /**< the name of the partition table type.
217*9663SMark.Logan@Sun.COM                                            \todo not very intuitive name */
218*9663SMark.Logan@Sun.COM         PedDiskOps* const       ops;
219*9663SMark.Logan@Sun.COM 
220*9663SMark.Logan@Sun.COM         PedDiskTypeFeature      features;   /**< bitmap of supported features */
221*9663SMark.Logan@Sun.COM };
222*9663SMark.Logan@Sun.COM 
223*9663SMark.Logan@Sun.COM /**
224*9663SMark.Logan@Sun.COM  * Architecture-specific operations.  i.e. communication with kernel (or
225*9663SMark.Logan@Sun.COM  * whatever) about changes, etc.
226*9663SMark.Logan@Sun.COM  */
227*9663SMark.Logan@Sun.COM struct _PedDiskArchOps {
228*9663SMark.Logan@Sun.COM         char* (*partition_get_path) (const PedPartition* part);
229*9663SMark.Logan@Sun.COM         int (*partition_is_busy) (const PedPartition* part);
230*9663SMark.Logan@Sun.COM         int (*disk_commit) (PedDisk* disk);
231*9663SMark.Logan@Sun.COM };
232*9663SMark.Logan@Sun.COM 
233*9663SMark.Logan@Sun.COM extern void ped_disk_type_register (PedDiskType* type);
234*9663SMark.Logan@Sun.COM extern void ped_disk_type_unregister (PedDiskType* type);
235*9663SMark.Logan@Sun.COM 
236*9663SMark.Logan@Sun.COM extern PedDiskType* ped_disk_type_get_next (PedDiskType* type);
237*9663SMark.Logan@Sun.COM extern PedDiskType* ped_disk_type_get (const char* name);
238*9663SMark.Logan@Sun.COM extern int ped_disk_type_check_feature (const PedDiskType* disk_type,
239*9663SMark.Logan@Sun.COM                                         PedDiskTypeFeature feature);
240*9663SMark.Logan@Sun.COM 
241*9663SMark.Logan@Sun.COM extern PedDiskType* ped_disk_probe (PedDevice* dev);
242*9663SMark.Logan@Sun.COM extern int ped_disk_clobber (PedDevice* dev);
243*9663SMark.Logan@Sun.COM extern int ped_disk_clobber_exclude (PedDevice* dev,
244*9663SMark.Logan@Sun.COM                                      const PedDiskType* exclude);
245*9663SMark.Logan@Sun.COM extern PedDisk* ped_disk_new (PedDevice* dev);
246*9663SMark.Logan@Sun.COM extern PedDisk* ped_disk_new_fresh (PedDevice* dev,
247*9663SMark.Logan@Sun.COM                                     const PedDiskType* disk_type);
248*9663SMark.Logan@Sun.COM extern PedDisk* ped_disk_duplicate (const PedDisk* old_disk);
249*9663SMark.Logan@Sun.COM extern void ped_disk_destroy (PedDisk* disk);
250*9663SMark.Logan@Sun.COM extern int ped_disk_commit (PedDisk* disk);
251*9663SMark.Logan@Sun.COM extern int ped_disk_commit_to_dev (PedDisk* disk);
252*9663SMark.Logan@Sun.COM extern int ped_disk_commit_to_os (PedDisk* disk);
253*9663SMark.Logan@Sun.COM extern int ped_disk_check (const PedDisk* disk);
254*9663SMark.Logan@Sun.COM extern void ped_disk_print (const PedDisk* disk);
255*9663SMark.Logan@Sun.COM 
256*9663SMark.Logan@Sun.COM extern int ped_disk_get_primary_partition_count (const PedDisk* disk);
257*9663SMark.Logan@Sun.COM extern int ped_disk_get_last_partition_num (const PedDisk* disk);
258*9663SMark.Logan@Sun.COM extern int ped_disk_get_max_primary_partition_count (const PedDisk* disk);
259*9663SMark.Logan@Sun.COM 
260*9663SMark.Logan@Sun.COM /** @} */
261*9663SMark.Logan@Sun.COM 
262*9663SMark.Logan@Sun.COM /**
263*9663SMark.Logan@Sun.COM  * \addtogroup PedPartition
264*9663SMark.Logan@Sun.COM  *
265*9663SMark.Logan@Sun.COM  * @{
266*9663SMark.Logan@Sun.COM  */
267*9663SMark.Logan@Sun.COM 
268*9663SMark.Logan@Sun.COM extern PedPartition* ped_partition_new (const PedDisk* disk,
269*9663SMark.Logan@Sun.COM                                         PedPartitionType type,
270*9663SMark.Logan@Sun.COM                                         const PedFileSystemType* fs_type,
271*9663SMark.Logan@Sun.COM                                         PedSector start,
272*9663SMark.Logan@Sun.COM                                         PedSector end);
273*9663SMark.Logan@Sun.COM extern void ped_partition_destroy (PedPartition* part);
274*9663SMark.Logan@Sun.COM extern int ped_partition_is_active (const PedPartition* part);
275*9663SMark.Logan@Sun.COM extern int ped_partition_set_flag (PedPartition* part, PedPartitionFlag flag,
276*9663SMark.Logan@Sun.COM                                    int state);
277*9663SMark.Logan@Sun.COM extern int ped_partition_get_flag (const PedPartition* part,
278*9663SMark.Logan@Sun.COM                                    PedPartitionFlag flag);
279*9663SMark.Logan@Sun.COM extern int ped_partition_is_flag_available (const PedPartition* part,
280*9663SMark.Logan@Sun.COM                                             PedPartitionFlag flag);
281*9663SMark.Logan@Sun.COM extern int ped_partition_set_system (PedPartition* part,
282*9663SMark.Logan@Sun.COM                                      const PedFileSystemType* fs_type);
283*9663SMark.Logan@Sun.COM extern int ped_partition_set_name (PedPartition* part, const char* name);
284*9663SMark.Logan@Sun.COM extern const char* ped_partition_get_name (const PedPartition* part);
285*9663SMark.Logan@Sun.COM extern int ped_partition_is_busy (const PedPartition* part);
286*9663SMark.Logan@Sun.COM extern char* ped_partition_get_path (const PedPartition* part);
287*9663SMark.Logan@Sun.COM 
288*9663SMark.Logan@Sun.COM extern const char* ped_partition_type_get_name (PedPartitionType part_type);
289*9663SMark.Logan@Sun.COM extern const char* ped_partition_flag_get_name (PedPartitionFlag flag);
290*9663SMark.Logan@Sun.COM extern PedPartitionFlag ped_partition_flag_get_by_name (const char* name);
291*9663SMark.Logan@Sun.COM extern PedPartitionFlag ped_partition_flag_next (PedPartitionFlag flag);
292*9663SMark.Logan@Sun.COM 
293*9663SMark.Logan@Sun.COM /** @} */
294*9663SMark.Logan@Sun.COM 
295*9663SMark.Logan@Sun.COM /**
296*9663SMark.Logan@Sun.COM  * \addtogroup PedDisk
297*9663SMark.Logan@Sun.COM  * @{
298*9663SMark.Logan@Sun.COM  */
299*9663SMark.Logan@Sun.COM 
300*9663SMark.Logan@Sun.COM extern int ped_disk_add_partition (PedDisk* disk, PedPartition* part,
301*9663SMark.Logan@Sun.COM                                    const PedConstraint* constraint);
302*9663SMark.Logan@Sun.COM extern int ped_disk_remove_partition (PedDisk* disk, PedPartition* part);
303*9663SMark.Logan@Sun.COM extern int ped_disk_delete_partition (PedDisk* disk, PedPartition* part);
304*9663SMark.Logan@Sun.COM extern int ped_disk_delete_all (PedDisk* disk);
305*9663SMark.Logan@Sun.COM extern int ped_disk_set_partition_geom (PedDisk* disk, PedPartition* part,
306*9663SMark.Logan@Sun.COM                                         const PedConstraint* constraint,
307*9663SMark.Logan@Sun.COM                                         PedSector start, PedSector end);
308*9663SMark.Logan@Sun.COM extern int ped_disk_maximize_partition (PedDisk* disk, PedPartition* part,
309*9663SMark.Logan@Sun.COM                                         const PedConstraint* constraint);
310*9663SMark.Logan@Sun.COM extern PedGeometry* ped_disk_get_max_partition_geometry (PedDisk* disk,
311*9663SMark.Logan@Sun.COM                 PedPartition* part, const PedConstraint* constraint);
312*9663SMark.Logan@Sun.COM extern int ped_disk_minimize_extended_partition (PedDisk* disk);
313*9663SMark.Logan@Sun.COM 
314*9663SMark.Logan@Sun.COM extern PedPartition* ped_disk_next_partition (const PedDisk* disk,
315*9663SMark.Logan@Sun.COM                                               const PedPartition* part);
316*9663SMark.Logan@Sun.COM extern PedPartition* ped_disk_get_partition (const PedDisk* disk, int num);
317*9663SMark.Logan@Sun.COM extern PedPartition* ped_disk_get_partition_by_sector (const PedDisk* disk,
318*9663SMark.Logan@Sun.COM                                                        PedSector sect);
319*9663SMark.Logan@Sun.COM extern PedPartition* ped_disk_extended_partition (const PedDisk* disk);
320*9663SMark.Logan@Sun.COM 
321*9663SMark.Logan@Sun.COM /* internal functions */
322*9663SMark.Logan@Sun.COM extern PedDisk* _ped_disk_alloc (const PedDevice* dev, const PedDiskType* type);
323*9663SMark.Logan@Sun.COM extern void _ped_disk_free (PedDisk* disk);
324*9663SMark.Logan@Sun.COM 
325*9663SMark.Logan@Sun.COM 
326*9663SMark.Logan@Sun.COM /** @} */
327*9663SMark.Logan@Sun.COM 
328*9663SMark.Logan@Sun.COM /**
329*9663SMark.Logan@Sun.COM  * \addtogroup PedPartition
330*9663SMark.Logan@Sun.COM  *
331*9663SMark.Logan@Sun.COM  * @{
332*9663SMark.Logan@Sun.COM  */
333*9663SMark.Logan@Sun.COM 
334*9663SMark.Logan@Sun.COM extern PedPartition* _ped_partition_alloc (const PedDisk* disk,
335*9663SMark.Logan@Sun.COM                                            PedPartitionType type,
336*9663SMark.Logan@Sun.COM                                            const PedFileSystemType* fs_type,
337*9663SMark.Logan@Sun.COM                                            PedSector start,
338*9663SMark.Logan@Sun.COM                                            PedSector end);
339*9663SMark.Logan@Sun.COM extern void _ped_partition_free (PedPartition* part);
340*9663SMark.Logan@Sun.COM 
341*9663SMark.Logan@Sun.COM extern int _ped_partition_attempt_align (
342*9663SMark.Logan@Sun.COM                 PedPartition* part, const PedConstraint* external,
343*9663SMark.Logan@Sun.COM                 PedConstraint* internal);
344*9663SMark.Logan@Sun.COM 
345*9663SMark.Logan@Sun.COM #endif /* PED_DISK_H_INCLUDED */
346*9663SMark.Logan@Sun.COM 
347*9663SMark.Logan@Sun.COM /** @} */
348*9663SMark.Logan@Sun.COM 
349