X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_file.c;h=f2e191a08f65aecd886dcf6e353affe5191a4dc7;hb=65286d916b384837567b0da69b4d5a77f190fdc0;hp=ada99726e1acb84d6ed4c7ea06e6918409c62c83;hpb=b25296b8b79d1964be81a4ebfa8262d4ca36a63f;p=palacios-OLD.git diff --git a/palacios/src/palacios/vmm_file.c b/palacios/src/palacios/vmm_file.c index ada9972..f2e191a 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->close); + + 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); +}