PedDevice

Device access. More...

Files

file  device.h

Data Structures

struct  _PedCHSGeometry
 A cylinder-head-sector "old-style" geometry. More...
struct  _PedDevice
 A block device - for example, /dev/hda, not /dev/hda3. More...
struct  _PedDeviceArchOps
 List of functions implementing architecture-specific operations. More...

Typedefs

typedef _PedCHSGeometry PedCHSGeometry
typedef _PedDevice PedDevice
typedef _PedDeviceArchOps PedDeviceArchOps
typedef long long PedSector
 We can address 2^63 sectors.

Enumerations

enum  PedDeviceType {
  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
}

Functions

void _ped_device_probe (const char *path)
char * canonicalize_file_name (const char *name)
int ped_device_begin_external_access (PedDevice *dev)
 Begins external access mode.
void ped_device_cache_remove (PedDevice *dev)
PedSector ped_device_check (PedDevice *dev, void *buffer, PedSector start, PedSector count)
int ped_device_close (PedDevice *dev)
 Close dev.
void ped_device_destroy (PedDevice *dev)
 Destroys a device and removes it from the device list, and frees all resources associated with the device (all resources allocated when the device was created).
int ped_device_end_external_access (PedDevice *dev)
 Complementary function to ped_device_begin_external_access.
void ped_device_free_all ()
 Close/free all devices.
PedDeviceped_device_get (const char *path)
 Gets the device "name", where name is usually the block device, e.g.
PedConstraint * ped_device_get_constraint (PedDevice *dev)
 Get a constraint that represents hardware requirements on alignment and geometry.
PedDeviceped_device_get_next (const PedDevice *dev)
 Returns the next device that was detected by ped_device_probe_all(), or calls to ped_device_get_next().
int ped_device_is_busy (PedDevice *dev)
int ped_device_open (PedDevice *dev)
 Attempt to open a device to allow use of read, write and sync functions.
void ped_device_probe_all ()
 Attempts to detect all devices.
int ped_device_read (const PedDevice *dev, void *buffer, PedSector start, PedSector count)
int ped_device_sync (PedDevice *dev)
int ped_device_sync_fast (PedDevice *dev)
int ped_device_write (PedDevice *dev, const void *buffer, PedSector start, PedSector count)

Detailed Description

Device access.

When ped_device_probe_all() is called, libparted attempts to detect all devices. It constructs a list which can be accessed with ped_device_get_next().

If you want to use a device that isn't on the list, use ped_device_get(). Also, there may be OS-specific constructors, for creating devices from file descriptors, stores, etc. For example, ped_device_new_from_store().


Enumeration Type Documentation

enum PedDeviceType

Deprecated:
Removal from API planned


Function Documentation

int ped_device_begin_external_access ( PedDevice dev  ) 

Begins external access mode.

External access mode allows you to safely do IO on the device. If a PedDevice is open, then you should not do any IO on that device, e.g. by calling an external program like e2fsck, unless you put it in external access mode. You should not use any libparted commands that do IO to a device, e.g. ped_file_system_{open|resize|copy}, ped_disk_{read|write}), while a device is in external access mode. Also, you should not ped_device_close() a device, while it is in external access mode. Note: ped_device_begin_external_access_mode() does things like tell the kernel to flush its caches.

Close a device while pretending it is still open. This is useful for temporarily suspending libparted access to the device in order for an external program to access it. (Running external programs while the device is open can cause cache coherency problems.)

In particular, this function keeps track of dev->open_count, so that reference counting isn't screwed up.

Returns:
zero on failure.

int ped_device_close ( PedDevice dev  ) 

Close dev.

If this is the final close, then resources allocated by ped_device_open() are freed.

Returns:
zero on failure

int ped_device_end_external_access ( PedDevice dev  ) 

Complementary function to ped_device_begin_external_access.

Note:
does things like tell the kernel to flush the device's cache.
Returns:
zero on failure.

void ped_device_free_all (  ) 

Close/free all devices.

Called by ped_done(), so you do not need to worry about it.

PedDevice * ped_device_get ( const char *  path  ) 

Gets the device "name", where name is usually the block device, e.g.

/dev/sdb. If the device wasn't detected with ped_device_probe_all(), an attempt will be made to detect it again. If it is found, it will be added to the list.

PedConstraint * ped_device_get_constraint ( PedDevice dev  ) 

Get a constraint that represents hardware requirements on alignment and geometry.

This is, for example, important for media that have a physical sector size that is a multiple of the logical sector size.

Warning:
This function is experimental for physical sector sizes not equal to 2^9.

PedDevice * ped_device_get_next ( const PedDevice dev  ) 

Returns the next device that was detected by ped_device_probe_all(), or calls to ped_device_get_next().

If dev is NULL, returns the first device.

Returns:
NULL if dev is the last device.

int ped_device_open ( PedDevice dev  ) 

Attempt to open a device to allow use of read, write and sync functions.

The meaning of "open" is architecture-dependent. Apart from requesting access to the device from the operating system, it does things like flushing caches.

Note:
May allocate resources. Any resources allocated here will be freed by a final ped_device_close(). (ped_device_open() may be called multiple times -- it's a ref-count-like mechanism)
Returns:
zero on failure


Generated on Fri May 4 05:15:31 2007 for libparted by  doxygen 1.5.2