xref: /illumos-gate/usr/src/lib/hal/libhal-storage/common/libhal-storage.h (revision 55fea89dcaa64928bed4327112404dcb3e07b79f)
1*18c2aff7Sartem /***************************************************************************
2*18c2aff7Sartem  * CVSID: $Id$
3*18c2aff7Sartem  *
4*18c2aff7Sartem  * libhal-storage.h : HAL convenience library for storage devices and volumes
5*18c2aff7Sartem  *
6*18c2aff7Sartem  * Copyright (C) 2004 Red Hat, Inc.
7*18c2aff7Sartem  *
8*18c2aff7Sartem  * Author: David Zeuthen <davidz@redhat.com>
9*18c2aff7Sartem  *
10*18c2aff7Sartem  * Licensed under the Academic Free License version 2.1
11*18c2aff7Sartem  *
12*18c2aff7Sartem  * This program is free software; you can redistribute it and/or modify
13*18c2aff7Sartem  * it under the terms of the GNU General Public License as published by
14*18c2aff7Sartem  * the Free Software Foundation; either version 2 of the License, or
15*18c2aff7Sartem  * (at your option) any later version.
16*18c2aff7Sartem  *
17*18c2aff7Sartem  * This program is distributed in the hope that it will be useful,
18*18c2aff7Sartem  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19*18c2aff7Sartem  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20*18c2aff7Sartem  * GNU General Public License for more details.
21*18c2aff7Sartem  *
22*18c2aff7Sartem  * You should have received a copy of the GNU General Public License
23*18c2aff7Sartem  * along with this program; if not, write to the Free Software
24*18c2aff7Sartem  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
25*18c2aff7Sartem  *
26*18c2aff7Sartem  **************************************************************************/
27*18c2aff7Sartem 
28*18c2aff7Sartem #ifndef LIBHAL_STORAGE_H
29*18c2aff7Sartem #define LIBHAL_STORAGE_H
30*18c2aff7Sartem 
31*18c2aff7Sartem #include <libhal.h>
32*18c2aff7Sartem 
33*18c2aff7Sartem #if defined(__cplusplus)
34*18c2aff7Sartem extern "C" {
35*18c2aff7Sartem #if 0
36*18c2aff7Sartem } /* shut up emacs indenting */
37*18c2aff7Sartem #endif
38*18c2aff7Sartem #endif
39*18c2aff7Sartem 
40*18c2aff7Sartem struct LibHalDrive_s;
41*18c2aff7Sartem typedef struct LibHalDrive_s LibHalDrive;
42*18c2aff7Sartem struct LibHalVolume_s;
43*18c2aff7Sartem typedef struct LibHalVolume_s LibHalVolume;
44*18c2aff7Sartem struct LibHalStoragePolicy_s;
45*18c2aff7Sartem typedef struct LibHalStoragePolicy_s LibHalStoragePolicy;
46*18c2aff7Sartem 
47*18c2aff7Sartem 
48*18c2aff7Sartem typedef enum {
49*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK           = 0x10000,
50*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE       = 0x10001,
51*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI      = 0x10002,
52*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB       = 0x10003,
53*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394  = 0x10004,
54*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK                     = 0x10100,
55*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_IDE                 = 0x10101,
56*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_SCSI                = 0x10102,
57*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_USB                 = 0x10103,
58*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_DISK_IEEE1394            = 0x10104,
59*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM                    = 0x10200,
60*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_IDE                = 0x10201,
61*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_SCSI               = 0x10202,
62*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_USB                = 0x10203,
63*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394           = 0x10204,
64*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY                   = 0x10300,
65*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IDE               = 0x10301,
66*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI              = 0x10302,
67*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_USB               = 0x10303,
68*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394          = 0x10304,
69*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_TAPE                     = 0x10400,
70*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_COMPACT_FLASH            = 0x10500,
71*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_MEMORY_STICK             = 0x10600,
72*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_SMART_MEDIA              = 0x10700,
73*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_SD_MMC                   = 0x10800,
74*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_CAMERA                   = 0x10900,
75*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER    = 0x10a00,
76*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DRIVE_ZIP                      = 0x10b00,
77*18c2aff7Sartem         LIBHAL_STORAGE_ICON_DRIVE_JAZ                      = 0x10c00,
78*18c2aff7Sartem         LIBHAL_STORAGE_ICON_DRIVE_FLASH_KEY                = 0x10d00,
79*18c2aff7Sartem 
80*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK          = 0x20000,
81*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE      = 0x20001,
82*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI     = 0x20002,
83*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB      = 0x20003,
84*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394 = 0x20004,
85*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK                    = 0x20100,
86*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_IDE                = 0x20101,
87*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_SCSI               = 0x20102,
88*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_USB                = 0x20103,
89*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_DISK_IEEE1394           = 0x20104,
90*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM                   = 0x20200,
91*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_IDE               = 0x20201,
92*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_SCSI              = 0x20202,
93*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_USB               = 0x20203,
94*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394          = 0x20204,
95*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY                  = 0x20300,
96*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IDE              = 0x20301,
97*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI             = 0x20302,
98*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_USB              = 0x20303,
99*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394         = 0x20304,
100*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_TAPE                    = 0x20400,
101*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_COMPACT_FLASH           = 0x20500,
102*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_MEMORY_STICK            = 0x20600,
103*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_SMART_MEDIA             = 0x20700,
104*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_SD_MMC                  = 0x20800,
105*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_CAMERA                  = 0x20900,
106*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER   = 0x20a00,
107*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_VOLUME_ZIP                     = 0x20b00,
108*18c2aff7Sartem         LIBHAL_STORAGE_ICON_VOLUME_JAZ                     = 0x20c00,
109*18c2aff7Sartem         LIBHAL_STORAGE_ICON_VOLUME_FLASH_KEY               = 0x20d00,
110*18c2aff7Sartem 
111*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_CDROM                     = 0x30000,
112*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_CDR                       = 0x30001,
113*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_CDRW                      = 0x30002,
114*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDROM                    = 0x30003,
115*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDRAM                    = 0x30004,
116*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDR                      = 0x30005,
117*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDRW                     = 0x30006,
118*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDPLUSR                  = 0x30007,
119*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW                 = 0x30008,
120*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_DVDPLUSRWDL               = 0x30009,
121*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_BDROM                     = 0x3000a,
122*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_BDR                       = 0x3000b,
123*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_BDRE                      = 0x3000c,
124*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_HDDVDROM                  = 0x3000d,
125*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_HDDVDR                    = 0x3000e,
126*18c2aff7Sartem 	LIBHAL_STORAGE_ICON_DISC_HDDVDRW                   = 0x3000f
127*18c2aff7Sartem } LibHalStoragePolicyIcon;
128*18c2aff7Sartem 
129*18c2aff7Sartem typedef struct {
130*18c2aff7Sartem 	LibHalStoragePolicyIcon icon;
131*18c2aff7Sartem 	const char *icon_path;
132*18c2aff7Sartem } LibHalStoragePolicyIconPair;
133*18c2aff7Sartem 
134*18c2aff7Sartem LibHalStoragePolicy *libhal_storage_policy_new		    (void) LIBHAL_DEPRECATED;
135*18c2aff7Sartem void                 libhal_storage_policy_free		    (LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
136*18c2aff7Sartem 
137*18c2aff7Sartem void                 libhal_storage_policy_set_icon_path    (LibHalStoragePolicy *policy,
138*18c2aff7Sartem 		   					     LibHalStoragePolicyIcon icon,
139*18c2aff7Sartem 							     const char *path) LIBHAL_DEPRECATED;
140*18c2aff7Sartem 
141*18c2aff7Sartem void                 libhal_storage_policy_set_icon_mapping (LibHalStoragePolicy *policy,
142*18c2aff7Sartem 							     LibHalStoragePolicyIconPair *pairs) LIBHAL_DEPRECATED;
143*18c2aff7Sartem const char  	    *libhal_storage_policy_lookup_icon	    (LibHalStoragePolicy *policy,
144*18c2aff7Sartem 						  	     LibHalStoragePolicyIcon icon) LIBHAL_DEPRECATED;
145*18c2aff7Sartem 
146*18c2aff7Sartem typedef enum {
147*18c2aff7Sartem 	LIBHAL_DRIVE_BUS_UNKNOWN     = 0x00,
148*18c2aff7Sartem 	LIBHAL_DRIVE_BUS_IDE         = 0x01,
149*18c2aff7Sartem 	LIBHAL_DRIVE_BUS_SCSI        = 0x02,
150*18c2aff7Sartem 	LIBHAL_DRIVE_BUS_USB         = 0x03,
151*18c2aff7Sartem 	LIBHAL_DRIVE_BUS_IEEE1394    = 0x04,
152*18c2aff7Sartem 	LIBHAL_DRIVE_BUS_CCW         = 0x05
153*18c2aff7Sartem } LibHalDriveBus;
154*18c2aff7Sartem 
155*18c2aff7Sartem typedef enum {
156*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_REMOVABLE_DISK        = 0x00,
157*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_DISK                  = 0x01,
158*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_CDROM                 = 0x02,
159*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_FLOPPY                = 0x03,
160*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_TAPE                  = 0x04,
161*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_COMPACT_FLASH         = 0x05,
162*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_MEMORY_STICK          = 0x06,
163*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_SMART_MEDIA           = 0x07,
164*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_SD_MMC                = 0x08,
165*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_CAMERA                = 0x09,
166*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER = 0x0a,
167*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_ZIP                   = 0x0b,
168*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_JAZ                   = 0x0c,
169*18c2aff7Sartem 	LIBHAL_DRIVE_TYPE_FLASHKEY              = 0x0d
170*18c2aff7Sartem } LibHalDriveType;
171*18c2aff7Sartem 
172*18c2aff7Sartem typedef enum {
173*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_CDROM       = 0x00001,
174*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_CDR         = 0x00002,
175*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_CDRW        = 0x00004,
176*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDRAM      = 0x00008,
177*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDROM      = 0x00010,
178*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDR        = 0x00020,
179*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDRW       = 0x00040,
180*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSR    = 0x00080,
181*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRW   = 0x00100,
182*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRDL  = 0x00200,
183*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_DVDPLUSRWDL = 0x00400,
184*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_BDROM       = 0x00800,
185*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_BDR         = 0x01000,
186*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_BDRE        = 0x02000,
187*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_HDDVDROM    = 0x04000,
188*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_HDDVDR      = 0x08000,
189*18c2aff7Sartem 	LIBHAL_DRIVE_CDROM_CAPS_HDDVDRW     = 0x10000
190*18c2aff7Sartem } LibHalDriveCdromCaps;
191*18c2aff7Sartem 
192*18c2aff7Sartem LibHalDrive         *libhal_drive_from_udi                    (LibHalContext *hal_ctx,
193*18c2aff7Sartem 							       const char *udi);
194*18c2aff7Sartem LibHalDrive         *libhal_drive_from_device_file            (LibHalContext *hal_ctx,
195*18c2aff7Sartem 							       const char *device_file);
196*18c2aff7Sartem void                 libhal_drive_free                        (LibHalDrive *drive);
197*18c2aff7Sartem 
198*18c2aff7Sartem dbus_bool_t          libhal_drive_is_hotpluggable          (LibHalDrive      *drive);
199*18c2aff7Sartem dbus_bool_t          libhal_drive_uses_removable_media     (LibHalDrive      *drive);
200*18c2aff7Sartem dbus_bool_t          libhal_drive_is_media_detected        (LibHalDrive      *drive);
201*18c2aff7Sartem dbus_uint64_t        libhal_drive_get_size                 (LibHalDrive      *drive);
202*18c2aff7Sartem dbus_uint64_t        libhal_drive_get_media_size           (LibHalDrive      *drive);
203*18c2aff7Sartem const char          *libhal_drive_get_partition_scheme     (LibHalDrive      *drive);
204*18c2aff7Sartem dbus_bool_t          libhal_drive_no_partitions_hint       (LibHalDrive      *drive);
205*18c2aff7Sartem dbus_bool_t          libhal_drive_requires_eject           (LibHalDrive      *drive);
206*18c2aff7Sartem LibHalDriveType      libhal_drive_get_type                 (LibHalDrive      *drive);
207*18c2aff7Sartem LibHalDriveBus       libhal_drive_get_bus                  (LibHalDrive      *drive);
208*18c2aff7Sartem LibHalDriveCdromCaps libhal_drive_get_cdrom_caps           (LibHalDrive      *drive);
209*18c2aff7Sartem unsigned int         libhal_drive_get_device_major         (LibHalDrive      *drive);
210*18c2aff7Sartem unsigned int         libhal_drive_get_device_minor         (LibHalDrive      *drive);
211*18c2aff7Sartem const char          *libhal_drive_get_type_textual         (LibHalDrive      *drive);
212*18c2aff7Sartem const char          *libhal_drive_get_device_file          (LibHalDrive      *drive);
213*18c2aff7Sartem const char          *libhal_drive_get_udi                  (LibHalDrive      *drive);
214*18c2aff7Sartem const char          *libhal_drive_get_serial               (LibHalDrive      *drive);
215*18c2aff7Sartem const char          *libhal_drive_get_firmware_version     (LibHalDrive      *drive);
216*18c2aff7Sartem const char          *libhal_drive_get_model                (LibHalDrive      *drive);
217*18c2aff7Sartem const char          *libhal_drive_get_vendor               (LibHalDrive      *drive);
218*18c2aff7Sartem const char          *libhal_drive_get_physical_device_udi  (LibHalDrive      *drive);
219*18c2aff7Sartem 
220*18c2aff7Sartem const char          *libhal_drive_get_dedicated_icon_drive    (LibHalDrive      *drive);
221*18c2aff7Sartem const char          *libhal_drive_get_dedicated_icon_volume   (LibHalDrive      *drive);
222*18c2aff7Sartem 
223*18c2aff7Sartem char                *libhal_drive_policy_compute_display_name (LibHalDrive        *drive,
224*18c2aff7Sartem 							       LibHalVolume        *volume,
225*18c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
226*18c2aff7Sartem char                *libhal_drive_policy_compute_icon_name    (LibHalDrive         *drive,
227*18c2aff7Sartem 							       LibHalVolume        *volume,
228*18c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
229*18c2aff7Sartem 
230*18c2aff7Sartem dbus_bool_t          libhal_drive_policy_is_mountable            (LibHalDrive         *drive,
231*18c2aff7Sartem 								  LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
232*18c2aff7Sartem const char          *libhal_drive_policy_get_desired_mount_point (LibHalDrive         *drive,
233*18c2aff7Sartem 								  LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
234*18c2aff7Sartem const char          *libhal_drive_policy_get_mount_options       (LibHalDrive         *drive,
235*18c2aff7Sartem 							          LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
236*18c2aff7Sartem const char          *libhal_drive_policy_get_mount_fs            (LibHalDrive      *drive,
237*18c2aff7Sartem 								  LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
238*18c2aff7Sartem 
239*18c2aff7Sartem char               **libhal_drive_find_all_volumes (LibHalContext *hal_ctx,
240*18c2aff7Sartem 						    LibHalDrive   *drive,
241*18c2aff7Sartem 						    int 	  *num_volumes);
242*18c2aff7Sartem 
243*18c2aff7Sartem 
244*18c2aff7Sartem char        *libhal_drive_policy_default_get_mount_root                (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
245*18c2aff7Sartem dbus_bool_t  libhal_drive_policy_default_use_managed_keyword           (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
246*18c2aff7Sartem char        *libhal_drive_policy_default_get_managed_keyword_primary   (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
247*18c2aff7Sartem char        *libhal_drive_policy_default_get_managed_keyword_secondary (LibHalContext *hal_ctx) LIBHAL_DEPRECATED;
248*18c2aff7Sartem 
249*18c2aff7Sartem 
250*18c2aff7Sartem typedef enum {
251*18c2aff7Sartem 	LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM,
252*18c2aff7Sartem 	LIBHAL_VOLUME_USAGE_PARTITION_TABLE,
253*18c2aff7Sartem 	LIBHAL_VOLUME_USAGE_RAID_MEMBER,
254*18c2aff7Sartem 	LIBHAL_VOLUME_USAGE_CRYPTO,
255*18c2aff7Sartem 	LIBHAL_VOLUME_USAGE_UNKNOWN,
256*18c2aff7Sartem 	LIBHAL_VOLUME_USAGE_OTHER
257*18c2aff7Sartem } LibHalVolumeUsage;
258*18c2aff7Sartem 
259*18c2aff7Sartem typedef enum {
260*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_CDROM       = 0x00,
261*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_CDR         = 0x01,
262*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_CDRW        = 0x02,
263*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDROM      = 0x03,
264*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDRAM      = 0x04,
265*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDR        = 0x05,
266*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDRW       = 0x06,
267*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR    = 0x07,
268*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW   = 0x08,
269*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR_DL = 0x09,
270*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_BDROM       = 0x0a,
271*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_BDR         = 0x0b,
272*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_BDRE        = 0x0c,
273*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_HDDVDROM    = 0x0d,
274*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_HDDVDR      = 0x0e,
275*18c2aff7Sartem 	LIBHAL_VOLUME_DISC_TYPE_HDDVDRW     = 0x0f
276*18c2aff7Sartem } LibHalVolumeDiscType;
277*18c2aff7Sartem 
278*18c2aff7Sartem LibHalVolume     *libhal_volume_from_udi                      (LibHalContext *hal_ctx,
279*18c2aff7Sartem 							       const char *udi);
280*18c2aff7Sartem LibHalVolume     *libhal_volume_from_device_file              (LibHalContext *hal_ctx,
281*18c2aff7Sartem 							       const char *device_file);
282*18c2aff7Sartem void              libhal_volume_free                          (LibHalVolume     *volume);
283*18c2aff7Sartem dbus_uint64_t     libhal_volume_get_size                      (LibHalVolume     *volume);
284*18c2aff7Sartem dbus_uint64_t     libhal_volume_get_disc_capacity             (LibHalVolume     *volume);
285*18c2aff7Sartem 
286*18c2aff7Sartem const char          *libhal_volume_get_udi                       (LibHalVolume     *volume);
287*18c2aff7Sartem const char          *libhal_volume_get_device_file               (LibHalVolume     *volume);
288*18c2aff7Sartem unsigned int         libhal_volume_get_device_major              (LibHalVolume     *volume);
289*18c2aff7Sartem unsigned int         libhal_volume_get_device_minor              (LibHalVolume     *volume);
290*18c2aff7Sartem const char          *libhal_volume_get_fstype                    (LibHalVolume     *volume);
291*18c2aff7Sartem const char          *libhal_volume_get_fsversion                 (LibHalVolume     *volume);
292*18c2aff7Sartem LibHalVolumeUsage    libhal_volume_get_fsusage                   (LibHalVolume     *volume);
293*18c2aff7Sartem dbus_bool_t          libhal_volume_is_mounted                    (LibHalVolume     *volume);
294*18c2aff7Sartem dbus_bool_t          libhal_volume_is_mounted_read_only          (LibHalVolume     *volume);
295*18c2aff7Sartem dbus_bool_t          libhal_volume_is_partition                  (LibHalVolume     *volume);
296*18c2aff7Sartem dbus_bool_t          libhal_volume_is_disc                       (LibHalVolume     *volume);
297*18c2aff7Sartem 
298*18c2aff7Sartem const char          *libhal_volume_get_partition_scheme          (LibHalVolume     *volume);
299*18c2aff7Sartem const char          *libhal_volume_get_partition_type            (LibHalVolume     *volume);
300*18c2aff7Sartem const char          *libhal_volume_get_partition_label           (LibHalVolume     *volume);
301*18c2aff7Sartem const char          *libhal_volume_get_partition_uuid            (LibHalVolume     *volume);
302*18c2aff7Sartem const char         **libhal_volume_get_partition_flags           (LibHalVolume     *volume);
303*18c2aff7Sartem unsigned int         libhal_volume_get_partition_number          (LibHalVolume     *volume);
304*18c2aff7Sartem dbus_uint64_t        libhal_volume_get_partition_start_offset    (LibHalVolume     *volume);
305*18c2aff7Sartem dbus_uint64_t        libhal_volume_get_partition_media_size      (LibHalVolume     *volume);
306*18c2aff7Sartem 
307*18c2aff7Sartem const char          *libhal_volume_get_label                     (LibHalVolume     *volume);
308*18c2aff7Sartem const char          *libhal_volume_get_mount_point               (LibHalVolume     *volume);
309*18c2aff7Sartem const char          *libhal_volume_get_uuid                      (LibHalVolume     *volume);
310*18c2aff7Sartem const char          *libhal_volume_get_storage_device_udi        (LibHalVolume     *volume);
311*18c2aff7Sartem 
312*18c2aff7Sartem const char          *libhal_volume_crypto_get_backing_volume_udi (LibHalVolume     *volume);
313*18c2aff7Sartem char                *libhal_volume_crypto_get_clear_volume_udi   (LibHalContext    *hal_ctx, LibHalVolume *volume);
314*18c2aff7Sartem 
315*18c2aff7Sartem 
316*18c2aff7Sartem dbus_bool_t          libhal_volume_disc_has_audio             (LibHalVolume     *volume);
317*18c2aff7Sartem dbus_bool_t          libhal_volume_disc_has_data              (LibHalVolume     *volume);
318*18c2aff7Sartem dbus_bool_t          libhal_volume_disc_is_blank              (LibHalVolume     *volume);
319*18c2aff7Sartem dbus_bool_t          libhal_volume_disc_is_rewritable         (LibHalVolume     *volume);
320*18c2aff7Sartem dbus_bool_t          libhal_volume_disc_is_appendable         (LibHalVolume     *volume);
321*18c2aff7Sartem LibHalVolumeDiscType libhal_volume_get_disc_type              (LibHalVolume     *volume);
322*18c2aff7Sartem 
323*18c2aff7Sartem int               libhal_volume_get_msdos_part_table_type     (LibHalVolume     *volume)  LIBHAL_DEPRECATED;
324*18c2aff7Sartem dbus_uint64_t     libhal_volume_get_msdos_part_table_start    (LibHalVolume     *volume)  LIBHAL_DEPRECATED;
325*18c2aff7Sartem dbus_uint64_t     libhal_volume_get_msdos_part_table_size     (LibHalVolume     *volume)  LIBHAL_DEPRECATED;
326*18c2aff7Sartem 
327*18c2aff7Sartem 
328*18c2aff7Sartem dbus_bool_t       libhal_volume_should_ignore 	              (LibHalVolume     *volume);
329*18c2aff7Sartem 
330*18c2aff7Sartem char             *libhal_volume_policy_compute_size_as_string (LibHalVolume     *volume) LIBHAL_DEPRECATED;
331*18c2aff7Sartem 
332*18c2aff7Sartem char             *libhal_volume_policy_compute_display_name   (LibHalDrive         *drive,
333*18c2aff7Sartem 							       LibHalVolume        *volume,
334*18c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
335*18c2aff7Sartem char             *libhal_volume_policy_compute_icon_name      (LibHalDrive         *drive,
336*18c2aff7Sartem 							       LibHalVolume        *volume,
337*18c2aff7Sartem 							       LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
338*18c2aff7Sartem 
339*18c2aff7Sartem dbus_bool_t       libhal_volume_policy_should_be_visible      (LibHalDrive         *drive,
340*18c2aff7Sartem 							       LibHalVolume        *volume,
341*18c2aff7Sartem 							       LibHalStoragePolicy *policy,
342*18c2aff7Sartem 							       const char          *target_mount_point) LIBHAL_DEPRECATED;
343*18c2aff7Sartem 
344*18c2aff7Sartem dbus_bool_t       libhal_volume_policy_is_mountable		(LibHalDrive         *drive,
345*18c2aff7Sartem 								 LibHalVolume        *volume,
346*18c2aff7Sartem 								 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
347*18c2aff7Sartem const char       *libhal_volume_policy_get_desired_mount_point  (LibHalDrive         *drive,
348*18c2aff7Sartem 								 LibHalVolume        *volume,
349*18c2aff7Sartem 								 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
350*18c2aff7Sartem const char       *libhal_volume_policy_get_mount_options   	(LibHalDrive         *drive,
351*18c2aff7Sartem 							    	 LibHalVolume        *volume,
352*18c2aff7Sartem 							    	 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
353*18c2aff7Sartem const char       *libhal_volume_policy_get_mount_fs        	(LibHalDrive         *drive,
354*18c2aff7Sartem 							    	 LibHalVolume        *volume,
355*18c2aff7Sartem 							    	 LibHalStoragePolicy *policy) LIBHAL_DEPRECATED;
356*18c2aff7Sartem 
357*18c2aff7Sartem 
358*18c2aff7Sartem #if defined(__cplusplus)
359*18c2aff7Sartem }
360*18c2aff7Sartem #endif
361*18c2aff7Sartem 
362*18c2aff7Sartem #endif /* LIBHAL_STORAGE_H */
363