am d12560aa: add the ability to seek to a raw location while reading MTD partition
Merge commit 'd12560aa2134d3af21a1220cd4873553f9c51743' into gingerbread-plus-aosp * commit 'd12560aa2134d3af21a1220cd4873553f9c51743': add the ability to seek to a raw location while reading MTD partition
This commit is contained in:
@@ -279,6 +279,12 @@ MtdReadContext *mtd_read_partition(const MtdPartition *partition)
|
|||||||
return ctx;
|
return ctx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Seeks to a location in the partition. Don't mix with reads of
|
||||||
|
// anything other than whole blocks; unpredictable things will result.
|
||||||
|
void mtd_read_skip_to(const MtdReadContext* ctx, size_t offset) {
|
||||||
|
lseek64(ctx->fd, offset, SEEK_SET);
|
||||||
|
}
|
||||||
|
|
||||||
static int read_block(const MtdPartition *partition, int fd, char *data)
|
static int read_block(const MtdPartition *partition, int fd, char *data)
|
||||||
{
|
{
|
||||||
struct mtd_ecc_stats before, after;
|
struct mtd_ecc_stats before, after;
|
||||||
@@ -449,6 +455,7 @@ static int write_block(MtdWriteContext *ctx, const char *data)
|
|||||||
if (retry > 0) {
|
if (retry > 0) {
|
||||||
fprintf(stderr, "mtd: wrote block after %d retries\n", retry);
|
fprintf(stderr, "mtd: wrote block after %d retries\n", retry);
|
||||||
}
|
}
|
||||||
|
fprintf(stderr, "mtd: successfully wrote block at %x\n", pos);
|
||||||
return 0; // Success!
|
return 0; // Success!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ typedef struct MtdWriteContext MtdWriteContext;
|
|||||||
MtdReadContext *mtd_read_partition(const MtdPartition *);
|
MtdReadContext *mtd_read_partition(const MtdPartition *);
|
||||||
ssize_t mtd_read_data(MtdReadContext *, char *data, size_t data_len);
|
ssize_t mtd_read_data(MtdReadContext *, char *data, size_t data_len);
|
||||||
void mtd_read_close(MtdReadContext *);
|
void mtd_read_close(MtdReadContext *);
|
||||||
|
void mtd_read_skip_to(const MtdReadContext *, size_t offset);
|
||||||
|
|
||||||
MtdWriteContext *mtd_write_partition(const MtdPartition *);
|
MtdWriteContext *mtd_write_partition(const MtdPartition *);
|
||||||
ssize_t mtd_write_data(MtdWriteContext *, const char *data, size_t data_len);
|
ssize_t mtd_write_data(MtdWriteContext *, const char *data, size_t data_len);
|
||||||
|
|||||||
Reference in New Issue
Block a user