2 * This file is part of the Palacios Virtual Machine Monitor developed
3 * by the V3VEE Project with funding from the United States National
4 * Science Foundation and the Department of Energy.
6 * The V3VEE Project is a joint project between Northwestern University
7 * and the University of New Mexico. You can find out more at
10 * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu>
11 * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org>
12 * All rights reserved.
14 * Author: Jack Lange <jarusl@cs.northwestern.edu>
16 * This is free software. You are permitted to use,
17 * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
24 raw_disk::raw_disk(string & filename) : v3_disk(filename){
25 this->f = fopen(filename.c_str(), "r+");
29 off_t raw_disk::get_capacity() {
32 stat(this->filename.c_str(), &f_stats);
34 return f_stats.st_size;
38 unsigned int raw_disk::read(unsigned char * buf, off_t offset, int length) {
39 int total_bytes = length;
42 fseeko(this->f, offset, SEEK_SET);
44 while (bytes_read < total_bytes) {
45 int tmp_bytes = fread(buf, 1, length - bytes_read, this->f);
50 bytes_read += tmp_bytes;
57 unsigned int raw_disk::write(unsigned char * buf, off_t offset, int length) {
58 int total_bytes = length;
59 int bytes_written = 0;
61 fseeko(this->f, offset, SEEK_SET);
63 while (bytes_written < total_bytes) {
64 int tmp_bytes = fwrite(buf, 1, length - bytes_written, this->f);
69 bytes_written += tmp_bytes;
76 void raw_disk::attach() {
81 void raw_disk::detach() {