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