static int flash_emu_erase_block (struct flash_dev *dev, uint32_t block_base) { block_dev_t *bdev; int len; char * data; int rc; bdev = dev->privdata; if(NULL == bdev) { return -ENODEV; } len = bdev->driver->ioctl(bdev, IOCTL_GETBLKSIZE, NULL, 0); if(NULL == (data = sysmalloc(len))) { return -ENOMEM; } memset((void *) data, 0xFF, (size_t) len); rc = block_dev_write_buffered(bdev, (const char *) data, (size_t) len, block_base); sysfree(data); if(len == rc) { return 0; } return rc; }
static size_t bdev_write(struct file_desc *desc, void *buf, size_t size) { int n_write = block_dev_write_buffered((block_dev_t *) desc->node->nas->fi->privdata, buf, size, desc->cursor); if (n_write > 0) { desc->cursor += n_write; } return n_write; }
static int flash_emu_program (struct flash_dev *dev, uint32_t base, const void* data, size_t len) { block_dev_t *bdev; bdev = dev->privdata; if(NULL == bdev) { return -ENODEV; } return block_dev_write_buffered(bdev, (const char *) data, len, (uint32_t) base); }
static int tmpfs_write_sector(struct nas *nas, char *buffer, uint32_t count, uint32_t sector) { struct tmpfs_fs_info *fsi; fsi = nas->fs->fsi; if(0 > block_dev_write_buffered(nas->fs->bdev, buffer, count * fsi->block_size, sector * fsi->block_size)) { return -1; } else { return count; } }