10 #include <sys/ioctl.h>
12 #include <sys/types.h>
19 int main(int argc, char* argv[]) {
20 unsigned long long base_addr = atoll(argv[1]);
21 unsigned long long num_bytes = atoll(argv[2]);
23 struct v3_mem_region mem;
26 printf("Usage: ./v3_mem <base_addr> <num_bytes>\n");
30 printf("Giving Palacios %dMB of memory: \n", num_bytes / (1024 * 1024));
32 mem.base_addr = base_addr;
33 mem.num_pages = num_bytes / 4096;
35 v3_fd = open(v3_dev, O_RDONLY);
38 printf("Error opening V3Vee control device\n");
42 ioctl(v3_fd, V3_ADD_MEMORY, &mem);
46 /* Close the file descriptor. */
56 int read_file(int fd, int size, unsigned char * buf) {
57 int left_to_read = size;
60 while (left_to_read != 0) {
61 int bytes_read = read(fd, buf + have_read, left_to_read);
63 if (bytes_read <= 0) {
67 have_read += bytes_read;
68 left_to_read -= bytes_read;
71 if (left_to_read != 0) {
72 printf("Error could not finish reading file\n");