Lines Matching defs:geom

20 /** \file geom.c */
54 * Initialize the previously allocated PedGeometry \p geom.
57 ped_geometry_init (PedGeometry* geom, const PedDevice* dev,
60 PED_ASSERT (geom != NULL, return 0);
63 geom->dev = (PedDevice*) dev;
64 return ped_geometry_set (geom, start, length);
76 PedGeometry* geom;
80 geom = (PedGeometry*) ped_malloc (sizeof (PedGeometry));
81 if (!geom)
83 if (!ped_geometry_init (geom, dev, start, length))
85 return geom;
88 free (geom);
97 * independent copy of \p geom. Both the input, \p geom, and the output
104 ped_geometry_duplicate (const PedGeometry* geom)
106 PED_ASSERT (geom != NULL, return NULL);
107 return ped_geometry_new (geom->dev, geom->start, geom->length);
140 ped_geometry_destroy (PedGeometry* geom)
142 PED_ASSERT (geom != NULL, return);
144 free (geom);
148 * Assign a new \p start, \p end (implicitly) and \p length to \p geom.
150 * \p geom->end is calculated from \p start and \p length.
153 ped_geometry_set (PedGeometry* geom, PedSector start, PedSector length)
155 PED_ASSERT (geom != NULL, return 0);
156 PED_ASSERT (geom->dev != NULL, return 0);
166 if (start < 0 || start + length - 1 >= geom->dev->length) {
174 geom->start = start;
175 geom->length = length;
176 geom->end = start + length - 1;
182 * Assign a new start to \p geom without changing \p geom->end.
184 * \p geom->length is updated accordingly.
187 ped_geometry_set_start (PedGeometry* geom, PedSector start)
189 return ped_geometry_set (geom, start, geom->end - start + 1);
193 * Assign a new end to \p geom without changing \p geom->start.
195 * \p geom->length is updated accordingly.
198 ped_geometry_set_end (PedGeometry* geom, PedSector end)
200 return ped_geometry_set (geom, geom->start, end - geom->start + 1);
262 * Tests if \p sector is inside \p geom.
264 * \return 1 if sector lies within the \p region that \p geom describes
267 ped_geometry_test_sector_inside (const PedGeometry* geom, PedSector sector)
269 PED_ASSERT (geom != NULL, return 0);
271 return sector >= geom->start && sector <= geom->end;
275 * Reads data from the region represented by \p geom. \p offset is the
280 * ped_device_read (geom->disk->dev, buffer, geom->start + offset, count)
289 ped_geometry_read (const PedGeometry* geom, void* buffer, PedSector offset,
294 PED_ASSERT (geom != NULL, return 0);
299 real_start = geom->start + offset;
301 if (real_start + count - 1 > geom->end)
304 if (!ped_device_read (geom->dev, buffer, real_start, count))
311 ped_geometry_read_alloc (const PedGeometry* geom, void** buffer,
314 char *buf = ped_malloc (count * geom->dev->sector_size);
317 int ok = ped_geometry_read (geom, buf, offset, count);
328 * Flushes the cache on \p geom.
331 * writes made by ped_geometry_write() to \p geom. It is slow, because
337 ped_geometry_sync (PedGeometry* geom)
339 PED_ASSERT (geom != NULL, return 0);
340 return ped_device_sync (geom->dev);
344 * Flushes the cache on \p geom.
347 * made by ped_geometry_write() to \p geom. It does NOT ensure cache coherency
348 * with other caches that cache data in the region described by \p geom.
354 ped_geometry_sync_fast (PedGeometry* geom)
356 PED_ASSERT (geom != NULL, return 0);
357 return ped_device_sync_fast (geom->dev);
361 * Writes data into the region represented by \p geom. \p offset is the
368 ped_geometry_write (PedGeometry* geom, const void* buffer, PedSector offset,
374 PED_ASSERT (geom != NULL, return 0);
379 real_start = geom->start + offset;
381 if (real_start + count - 1 > geom->end) {
388 geom->dev->path);
392 if (!ped_device_write (geom->dev, buffer, real_start, count))
400 * Checks a region for physical defects on \p geom. \p buffer is used
404 * region represented by \p geom, and is \p count sectors long.
413 ped_geometry_check (PedGeometry* geom, void* buffer, PedSector buffer_size,
421 PED_ASSERT (geom != NULL, return 0);
432 if (!ped_geometry_read (geom, buffer, group, read_len))
442 if (!ped_geometry_read (geom, buffer, i, granularity)) {