From 78ef2bb502c15bd7ef117a365e6afc7dee4ad71b Mon Sep 17 00:00:00 2001 From: Matthew Fioravante Date: Tue, 9 Oct 2012 10:39:08 +0100 Subject: minios: add posix io for blkfront This patch adds posix io support (read,write,lseek) to block devices using blkfront. Signed-off-by: Matthew Fioravante Acked-by: Samuel Thibault Committed-by: Ian Campbell --- extras/mini-os/include/blkfront.h | 10 ++++++++++ extras/mini-os/include/lib.h | 1 + 2 files changed, 11 insertions(+) (limited to 'extras/mini-os/include') diff --git a/extras/mini-os/include/blkfront.h b/extras/mini-os/include/blkfront.h index 724137eb45..3528af9d23 100644 --- a/extras/mini-os/include/blkfront.h +++ b/extras/mini-os/include/blkfront.h @@ -28,7 +28,17 @@ struct blkfront_info }; struct blkfront_dev *init_blkfront(char *nodename, struct blkfront_info *info); #ifdef HAVE_LIBC +#include +/* POSIX IO functions: + * use blkfront_open() to get a file descriptor to the block device + * Don't use the other blkfront posix functions here directly, instead use + * read(), write(), lseek() and fstat() on the file descriptor + */ int blkfront_open(struct blkfront_dev *dev); +int blkfront_posix_rwop(int fd, uint8_t* buf, size_t count, int write); +#define blkfront_posix_write(fd, buf, count) blkfront_posix_rwop(fd, (uint8_t*)buf, count, 1) +#define blkfront_posix_read(fd, buf, count) blkfront_posix_rwop(fd, (uint8_t*)buf, count, 0) +int blkfront_posix_fstat(int fd, struct stat* buf); #endif void blkfront_aio(struct blkfront_aiocb *aiocbp, int write); #define blkfront_aio_read(aiocbp) blkfront_aio(aiocbp, 0) diff --git a/extras/mini-os/include/lib.h b/extras/mini-os/include/lib.h index 1af2717c0b..d4641b6e89 100644 --- a/extras/mini-os/include/lib.h +++ b/extras/mini-os/include/lib.h @@ -174,6 +174,7 @@ extern struct file { } tap; struct { struct blkfront_dev *dev; + off_t offset; } blk; struct { struct kbdfront_dev *dev; -- cgit v1.2.3