summaryrefslogtreecommitdiff
path: root/include/parted/device.in.h
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2012-01-09 19:42:49 +0100
committerJim Meyering <meyering@redhat.com>2012-01-09 20:39:35 +0100
commite977fafd31d61a6fca60e20b86f536048fdaa68e (patch)
tree54e1d835cae45b7aee8db436368e053174493ed9 /include/parted/device.in.h
parentace74051ebdadd2d6d428948af1982543149ae79 (diff)
downloadparted-e977fafd31d61a6fca60e20b86f536048fdaa68e.tar.gz
maint: rename public .h files to .in.h
Generate .h files from .in.h files, so that we can continue to use _GL_ATTRIBUTE_PURE and _GL_ATTRIBUTE_CONST in the primary sources, without including them in publicly-installed files. Each generated (and later installed) header file gets expansions of those macros. * include/parted/Makefile.am: New rules. * .gitignore: Ignore the generated files. * Makefile.am (SUBDIRS): Reorder so we build in include/ before libparted, i.e., so that we generate the .h files we'll need.
Diffstat (limited to 'include/parted/device.in.h')
-rw-r--r--include/parted/device.in.h165
1 files changed, 165 insertions, 0 deletions
diff --git a/include/parted/device.in.h b/include/parted/device.in.h
new file mode 100644
index 0000000..a3d1737
--- /dev/null
+++ b/include/parted/device.in.h
@@ -0,0 +1,165 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998-2001, 2005, 2007-2008, 2011-2012 Free Software
+ Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/**
+ * \addtogroup PedDevice
+ * @{
+ */
+
+/** \file device.h */
+
+#ifndef PED_DEVICE_H_INCLUDED
+#define PED_DEVICE_H_INCLUDED
+
+/** We can address 2^63 sectors */
+typedef long long PedSector;
+
+typedef enum {
+ PED_DEVICE_UNKNOWN = 0,
+ PED_DEVICE_SCSI = 1,
+ PED_DEVICE_IDE = 2,
+ PED_DEVICE_DAC960 = 3,
+ PED_DEVICE_CPQARRAY = 4,
+ PED_DEVICE_FILE = 5,
+ PED_DEVICE_ATARAID = 6,
+ PED_DEVICE_I2O = 7,
+ PED_DEVICE_UBD = 8,
+ PED_DEVICE_DASD = 9,
+ PED_DEVICE_VIODASD = 10,
+ PED_DEVICE_SX8 = 11,
+ PED_DEVICE_DM = 12,
+ PED_DEVICE_XVD = 13,
+ PED_DEVICE_SDMMC = 14,
+ PED_DEVICE_VIRTBLK = 15,
+ PED_DEVICE_AOE = 16,
+ PED_DEVICE_MD = 17,
+ PED_DEVICE_LOOP = 18
+} PedDeviceType;
+
+typedef struct _PedDevice PedDevice;
+typedef struct _PedDeviceArchOps PedDeviceArchOps;
+typedef struct _PedCHSGeometry PedCHSGeometry;
+
+/**
+ * A cylinder-head-sector "old-style" geometry.
+ *
+ * A device addressed in this way has C*H*S sectors.
+ */
+struct _PedCHSGeometry {
+ int cylinders;
+ int heads;
+ int sectors;
+};
+
+/** A block device - for example, /dev/hda, not /dev/hda3 */
+struct _PedDevice {
+ PedDevice* next;
+
+ char* model; /**< \brief description of hardware
+ (manufacturer, model) */
+ char* path; /**< device /dev entry */
+
+ PedDeviceType type; /**< SCSI, IDE, etc. \sa PedDeviceType */
+ long long sector_size; /**< logical sector size */
+ long long phys_sector_size; /**< physical sector size */
+ PedSector length; /**< device length (LBA) */
+
+ int open_count; /**< the number of times this device has
+ been opened with ped_device_open(). */
+ int read_only;
+ int external_mode;
+ int dirty;
+ int boot_dirty;
+
+ PedCHSGeometry hw_geom;
+ PedCHSGeometry bios_geom;
+ short host, did;
+
+ void* arch_specific;
+};
+
+#include <parted/natmath.h>
+
+/**
+ * List of functions implementing architecture-specific operations.
+ */
+struct _PedDeviceArchOps {
+ PedDevice* (*_new) (const char* path);
+ void (*destroy) (PedDevice* dev);
+ int (*is_busy) (PedDevice* dev);
+ int (*open) (PedDevice* dev);
+ int (*refresh_open) (PedDevice* dev);
+ int (*close) (PedDevice* dev);
+ int (*refresh_close) (PedDevice* dev);
+ int (*read) (const PedDevice* dev, void* buffer,
+ PedSector start, PedSector count);
+ int (*write) (PedDevice* dev, const void* buffer,
+ PedSector start, PedSector count);
+ int (*sync) (PedDevice* dev);
+ int (*sync_fast) (PedDevice* dev);
+ PedSector (*check) (PedDevice* dev, void* buffer,
+ PedSector start, PedSector count);
+ void (*probe_all) ();
+ /* These functions are optional */
+ PedAlignment *(*get_minimum_alignment)(const PedDevice *dev);
+ PedAlignment *(*get_optimum_alignment)(const PedDevice *dev);
+};
+
+#include <parted/constraint.h>
+#include <parted/timer.h>
+
+extern void ped_device_probe_all ();
+extern void ped_device_free_all ();
+
+extern PedDevice* ped_device_get (const char* name);
+extern PedDevice* ped_device_get_next (const PedDevice* dev) _GL_ATTRIBUTE_PURE;
+extern int ped_device_is_busy (PedDevice* dev);
+extern int ped_device_open (PedDevice* dev);
+extern int ped_device_close (PedDevice* dev);
+extern void ped_device_destroy (PedDevice* dev);
+extern void ped_device_cache_remove (PedDevice* dev);
+
+extern int ped_device_begin_external_access (PedDevice* dev);
+extern int ped_device_end_external_access (PedDevice* dev);
+
+extern int ped_device_read (const PedDevice* dev, void* buffer,
+ PedSector start, PedSector count);
+extern int ped_device_write (PedDevice* dev, const void* buffer,
+ PedSector start, PedSector count);
+extern int ped_device_sync (PedDevice* dev);
+extern int ped_device_sync_fast (PedDevice* dev);
+extern PedSector ped_device_check (PedDevice* dev, void* buffer,
+ PedSector start, PedSector count);
+extern PedConstraint* ped_device_get_constraint (const PedDevice* dev);
+
+extern PedConstraint *ped_device_get_minimal_aligned_constraint(
+ const PedDevice *dev);
+extern PedConstraint *ped_device_get_optimal_aligned_constraint(
+ const PedDevice *dev);
+
+extern PedAlignment *ped_device_get_minimum_alignment(const PedDevice *dev);
+extern PedAlignment *ped_device_get_optimum_alignment(const PedDevice *dev);
+
+/* private stuff ;-) */
+
+extern void _ped_device_probe (const char* path);
+
+#endif /* PED_DEVICE_H_INCLUDED */
+
+/** @} */