X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_file.c;h=6e69ce179d416a2c21762aa28e7b97eabca2710a;hb=29b7ff8811c82ab543f5c969e44ff217637a09c7;hp=ada99726e1acb84d6ed4c7ea06e6918409c62c83;hpb=b25296b8b79d1964be81a4ebfa8262d4ca36a63f;p=palacios.git diff --git a/palacios/src/palacios/vmm_file.c b/palacios/src/palacios/vmm_file.c index ada9972..6e69ce1 100644 --- a/palacios/src/palacios/vmm_file.c +++ b/palacios/src/palacios/vmm_file.c @@ -22,9 +22,9 @@ #include #include #include +#include - -struct v3_file_hooks * file_hooks = 0; +static struct v3_file_hooks * file_hooks = NULL; void V3_Init_File(struct v3_file_hooks * hooks) { file_hooks = hooks; @@ -32,3 +32,45 @@ void V3_Init_File(struct v3_file_hooks * hooks) { return; } + + +v3_file_t v3_file_open(struct v3_vm_info * vm, char * path, uint8_t mode) { + void * priv_data = NULL; + V3_ASSERT(file_hooks); + V3_ASSERT(file_hooks->open); + + if (vm) { + priv_data = vm->host_priv_data; + } + + return file_hooks->open(path, mode, priv_data); +} + +int v3_file_close(v3_file_t file) { + V3_ASSERT(file_hooks); + V3_ASSERT(file_hooks->open); + + return file_hooks->close(file); +} + +uint64_t v3_file_size(v3_file_t file) { + V3_ASSERT(file_hooks); + V3_ASSERT(file_hooks->size); + + return file_hooks->size(file); +} + +uint64_t v3_file_read(v3_file_t file, uint8_t * buf, uint64_t len, uint64_t off) { + V3_ASSERT(file_hooks); + V3_ASSERT(file_hooks->read); + + return file_hooks->read(file, buf, len, off); +} + + +uint64_t v3_file_write(v3_file_t file, uint8_t * buf, uint64_t len, uint64_t off) { + V3_ASSERT(file_hooks); + V3_ASSERT(file_hooks->write); + + return file_hooks->write(file, buf, len, off); +}