Loading...
Searching...
No Matches
PedGeometry

## Files

file | geom.h

## Data Structures

struct | _PedGeometry
| Geometry of the partition. More...

## Macros

#define | _(String)

## Typedefs

typedef struct _PedGeometry | PedGeometry
typedef struct _PedGeometry | PedGeometry

## Functions

PedSector | ped_geometry_check (PedGeometry *geom, void *buffer, PedSector buffer_size, PedSector offset, PedSector granularity, PedSector count, PedTimer *timer)
| Checks for physical disk errors.
void | ped_geometry_destroy (PedGeometry *geom)
| Destroy a PedGeometry object.
PedGeometry * | ped_geometry_duplicate (const PedGeometry *geom)
| Duplicate a PedGeometry object.
int | ped_geometry_init (PedGeometry *geom, const PedDevice *dev, PedSector start, PedSector length)
| Initialize the previously allocated PedGeometry `geom`.
PedGeometry * | ped_geometry_intersect (const PedGeometry *a, const PedGeometry *b)
| Return a PedGeometry object that refers to the intersection of `a` and `b`.
PedSector | ped_geometry_map (const PedGeometry *dst, const PedGeometry *src, PedSector sector)
| This function takes a `sector` inside the region described by src, and returns that sector's address inside dst.
PedGeometry * | ped_geometry_new (const PedDevice *dev, PedSector start, PedSector length)
| Create a new PedGeometry object on `disk`, starting at `start` with a size of `length` sectors.
int | ped_geometry_read (const PedGeometry *geom, void *buffer, PedSector offset, PedSector count)
| Reads data from the region represented by `geom`.
int | ped_geometry_read_alloc (const PedGeometry *geom, void **buffer, PedSector offset, PedSector count)
int | ped_geometry_set (PedGeometry *geom, PedSector start, PedSector length)
| Assign a new `start`, `end` (implicitly) and `length` to `geom`.
int | ped_geometry_set_end (PedGeometry *geom, PedSector end)
| Assign a new end to `geom` without changing `geom->start`.
int | ped_geometry_set_start (PedGeometry *geom, PedSector start)
| Assign a new start to `geom` without changing `geom->end`.
int | ped_geometry_sync (PedGeometry *geom)
| Flushes the cache on `geom`.
int | ped_geometry_sync_fast (PedGeometry *geom)
| Flushes the cache on `geom`.
int | ped_geometry_test_equal (const PedGeometry *a, const PedGeometry *b)
| Tests if a and `b` refer to the same physical region.
int | ped_geometry_test_inside (const PedGeometry *a, const PedGeometry *b)
| Tests if `b` lies completely within `a`.
int | ped_geometry_test_overlap (const PedGeometry *a, const PedGeometry *b)
| Test if `a` overlaps with `b`.
int | ped_geometry_test_sector_inside (const PedGeometry *geom, PedSector sector)
| Tests if `sector` is inside `geom`.
int | ped_geometry_write (PedGeometry *geom, const void *buffer, PedSector offset, PedSector count)
| Writes data into the region represented by `geom`.

## Detailed Description

PedGeometry represents a continuous region on a device.

All addressing through a PedGeometry object is in terms of the start of the continuous region.

The following conditions are always true on a PedGeometry object manipulated with the GNU Parted API:

- start + length - 1 == end
- length > 0
- start >= 0
- end < dev->length

## Macro Definition Documentation

## _

#define _ | ( |  | String | ) |

Value:
(String)

## Typedef Documentation

## PedGeometry [1/2]

typedef struct _PedGeometry PedGeometry

## PedGeometry [2/2]

typedef struct _PedGeometry PedGeometry

## Function Documentation

## ped_geometry_check()

PedSector ped_geometry_check | ( | PedGeometry * | geom,
|  | void * | buffer,
|  | PedSector | buffer_size,
|  | PedSector | offset,
|  | PedSector | granularity,
|  | PedSector | count,
|  | PedTimer * | timer )

extern

Checks for physical disk errors.

Todo
  use ped_device_check()

Checks a region for physical defects on `geom`. `buffer` is used for temporary storage for ped_geometry_check(), and has an undefined value. `buffer` is `buffer_size` sectors long. The region checked starts at `offset` sectors inside the region represented by `geom`, and is `count` sectors long. `granularity` specificies how sectors should be grouped together. The first bad sector to be returned will always be in the form: offset + n * granularity

Returns
  the first bad sector, or 0 if there were no physical errors

## ped_geometry_destroy()

void ped_geometry_destroy | ( | PedGeometry * | geom | ) |

extern

Destroy a PedGeometry object.

## ped_geometry_duplicate()

PedGeometry * ped_geometry_duplicate | ( | const PedGeometry * | geom | ) |

extern

Duplicate a PedGeometry object.

This function constructs a PedGeometry object that is an identical but independent copy of `geom`. Both the input, `geom`, and the output should be destroyed with ped_geometry_destroy() when they are no longer needed.

Returns
  NULL on failure.

## ped_geometry_init()

int ped_geometry_init | ( | PedGeometry * | geom,
|  | const PedDevice * | dev,
|  | PedSector | start,
|  | PedSector | length )

extern

Initialize the previously allocated PedGeometry `geom`.

## ped_geometry_intersect()

PedGeometry * ped_geometry_intersect | ( | const PedGeometry * | a,
|  | const PedGeometry * | b )

extern

Return a PedGeometry object that refers to the intersection of `a` and `b`.

This function constructs a PedGeometry object that describes the region that is common to both a and b. If there is no such common region, it returns NULL. (This situation is not treated as an error by much of GNU Parted.)

## ped_geometry_map()

PedSector ped_geometry_map | ( | const PedGeometry * | dst,
|  | const PedGeometry * | src,
|  | PedSector | sector )

extern

This function takes a `sector` inside the region described by src, and returns that sector's address inside dst.

This means that

ped_geometry_read (dst, buf, ped_geometry_map(dst, src, sector), 1)
ped_geometry_map
PedSector ped_geometry_map(const PedGeometry *dst, const PedGeometry *src, PedSector sector)
This function takes a sector inside the region described by src, and returns that sector's address in...
Definition geom.c:467
ped_geometry_read
int ped_geometry_read(const PedGeometry *geom, void *buffer, PedSector offset, PedSector count)
Reads data from the region represented by geom.
Definition geom.c:283
sector
uint8_t sector
Definition pc98.c:7

does the same thing as

ped_geometry_read (src, buf, sector, 1)

Clearly, this will only work if `src` and `dst` overlap.

Returns
  -1 if `sector` is not within `dst's` space, or `sector's` address inside `dst`

## ped_geometry_new()

PedGeometry * ped_geometry_new | ( | const PedDevice * | dev,
|  | PedSector | start,
|  | PedSector | length )

extern

Create a new PedGeometry object on `disk`, starting at `start` with a size of `length` sectors.

Returns
  NULL on failure.

## ped_geometry_read()

int ped_geometry_read | ( | const PedGeometry * | geom,
|  | void * | buffer,
|  | PedSector | offset,
|  | PedSector | count )

extern

Reads data from the region represented by `geom`.

`offset` is the location from within the region, not from the start of the disk. `count` sectors are read into `buffer`. This is essentially equivalent to:

ped_device_read (geom->disk->dev, buffer, geom->start + offset, count)
offset
offset
Definition fdasd.h:264
ped_device_read
int ped_device_read(const PedDevice *dev, void *buffer, PedSector start, PedSector count)
Definition device.c:326

Exceptions

  PED_EXCEPTION_ERROR | when attempting to read sectors outside of partition

Returns
  0 on failure

## ped_geometry_read_alloc()

int ped_geometry_read_alloc | ( | const PedGeometry * | geom,
|  | void ** | buffer,
|  | PedSector | offset,
|  | PedSector | count )

extern

## ped_geometry_set()

int ped_geometry_set | ( | PedGeometry * | geom,
|  | PedSector | start,
|  | PedSector | length )

extern

Assign a new `start`, `end` (implicitly) and `length` to `geom`.

`geom->end` is calculated from `start` and `length`.

## ped_geometry_set_end()

int ped_geometry_set_end | ( | PedGeometry * | geom,
|  | PedSector | end )

extern

Assign a new end to `geom` without changing `geom->start`.

`geom->length` is updated accordingly.

## ped_geometry_set_start()

int ped_geometry_set_start | ( | PedGeometry * | geom,
|  | PedSector | start )

extern

Assign a new start to `geom` without changing `geom->end`.

`geom->length` is updated accordingly.

## ped_geometry_sync()

int ped_geometry_sync | ( | PedGeometry * | geom | ) |

extern

Flushes the cache on `geom`.

This function flushes all write-behind caches that might be holding writes made by ped_geometry_write() to `geom`. It is slow, because it guarantees cache coherency among all relevant caches.

Returns
  0 on failure

## ped_geometry_sync_fast()

int ped_geometry_sync_fast | ( | PedGeometry * | geom | ) |

extern

Flushes the cache on `geom`.

This function flushes all write-behind caches that might be holding writes made by ped_geometry_write() to `geom`. It does NOT ensure cache coherency with other caches that cache data in the region described by `geom`. If you need cache coherency, use ped_geometry_sync() instead.

Returns
  0 on failure

## ped_geometry_test_equal()

int ped_geometry_test_equal | ( | const PedGeometry * | a,
|  | const PedGeometry * | b )

extern

Tests if a and `b` refer to the same physical region.

Returns
  1 if `a` and `b` describe the same regions

## ped_geometry_test_inside()

int ped_geometry_test_inside | ( | const PedGeometry * | a,
|  | const PedGeometry * | b )

extern

Tests if `b` lies completely within `a`.

That is, they lie on the same physical device, and all of the `b's` region is contained inside `a's`.

Returns
  1 if the region `b` describes is contained entirely inside `a`

## ped_geometry_test_overlap()

int ped_geometry_test_overlap | ( | const PedGeometry * | a,
|  | const PedGeometry * | b )

extern

Test if `a` overlaps with `b`.

That is, they lie on the same physical device, and they share the same physical region at least partially.

Returns
  1 if `a` and `b` overlap.

## ped_geometry_test_sector_inside()

int ped_geometry_test_sector_inside | ( | const PedGeometry * | geom,
|  | PedSector | sector )

extern

Tests if `sector` is inside `geom`.

Returns
  1 if sector lies within the `region` that `geom` describes

## ped_geometry_write()

int ped_geometry_write | ( | PedGeometry * | geom,
|  | const void * | buffer,
|  | PedSector | offset,
|  | PedSector | count )

extern

Writes data into the region represented by `geom`.

`offset` is the location from within the region, not from the start of the disk. `count` sectors are written.

Returns
  0 on failure