Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Merge branch 'devel' 1.0
Jack Lange [Sat, 25 Oct 2008 18:39:54 +0000 (13:39 -0500)]
Conflicts:
palacios/include/devices/generic.h
palacios/src/devices/ramdisk.c

palacios/include/devices/generic.h
palacios/include/devices/ide.h
palacios/include/palacios/vmcs.h
palacios/include/palacios/vmcs_gen.h
palacios/src/devices/ramdisk.c
palacios/src/geekos/debug.c [new file with mode: 0644]
palacios/src/geekos/net.c [new file with mode: 0644]
palacios/src/geekos/queue.c [new file with mode: 0644]
palacios/src/geekos/testvm.s [new file with mode: 0644]
palacios/src/palacios/vmm_config.c

index 03c120c..664466e 100644 (file)
  */
 
 
+
 #ifndef __DEVICES_GENERIC_H__
 #define __DEVICES_GENERIC_H__
 
 #ifdef __V3VEE__
 
 
-
 #include <palacios/vm_dev.h>
 
 //
index 03d8a48..fd6cf04 100644 (file)
@@ -205,6 +205,7 @@ struct  drive_t {
   struct sense_info_t sense;
   struct atapi_t atapi;
   
+
   /* JRL */
   void * private_data;
 
@@ -243,6 +244,7 @@ struct  ramdisk_t {
 
 #endif
 
+
 #if 0
 
 // FLAT MODE
index 5c78dd6..3ba5064 100644 (file)
  */
 
 
+
 #ifndef __VMCS_H__
 #define __VMCS_H__
 
 #ifdef __V3VEE__
 
 
+
 #include <palacios/vmm_types.h>
 
 
index 10de469..5879875 100644 (file)
@@ -1796,7 +1796,7 @@ int handle_atapi_packet_command(struct vm_device * dev, struct channel_t * chann
                break;
              }
 
-             
+
              if (rd_init_send_atapi_command(dev, channel, atapi_command, toc_length, alloc_length, false) == -1) {
                PrintError("Failed to init send atapi command in read toc (fmt=%d)\n", format);
                return -1;
@@ -2576,7 +2576,6 @@ static void rd_print_state(struct ramdisk_t * ramdisk) {
 
 
 
-
 static int check_bit_fields(struct controller_t * controller) {
   //Check bit fields
   controller->sector_count = 0;
diff --git a/palacios/src/geekos/debug.c b/palacios/src/geekos/debug.c
new file mode 100644 (file)
index 0000000..483d4af
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * This file is part of the Palacios Virtual Machine Monitor developed
+ * by the V3VEE Project with funding from the United States National 
+ * Science Foundation and the Department of Energy.  
+ *
+ * The V3VEE Project is a joint project between Northwestern University
+ * and the University of New Mexico.  You can find out more at 
+ * http://www.v3vee.org
+ *
+ * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu> 
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org> 
+ * All rights reserved.
+ *
+ * Author: Jack Lange <jarusl@cs.northwestern.edu>
+ *
+ * This is free software.  You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
+
+#include <geekos/debug.h>
+
+
+void PrintBoth(const char * format, ...) {
+  va_list args;
+
+  va_start(args, format);
+  PrintList(format, args);
+  SerialPrintList(format, args);
+  va_end(args);
+}
diff --git a/palacios/src/geekos/net.c b/palacios/src/geekos/net.c
new file mode 100644 (file)
index 0000000..8fc76bc
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * This file is part of the Palacios Virtual Machine Monitor developed
+ * by the V3VEE Project with funding from the United States National 
+ * Science Foundation and the Department of Energy.  
+ *
+ * The V3VEE Project is a joint project between Northwestern University
+ * and the University of New Mexico.  You can find out more at 
+ * http://www.v3vee.org
+ *
+ * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu> 
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org> 
+ * All rights reserved.
+ *
+ * Author: Jack Lange <jarusl@cs.northwestern.edu>
+ *
+ * This is free software.  You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
+
+#include <geekos/net.h>
+#include <geekos/socket.h>
+#include <geekos/ne2k.h>
+
+void Init_Network() {
+  init_socket_layer();
+}
+
+
+
+
+void test_network() {
+
+    uchar_t local_addr[4];
+    uchar_t remote_addr[4];
+
+    local_addr[0] = 10;
+    local_addr[1] = 0;
+    local_addr[2] = 2;
+    local_addr[3] = 21;
+
+    set_ip_addr(local_addr);
+
+    remote_addr[0] = 10;
+    remote_addr[1] = 0;
+    remote_addr[2] = 2;
+    remote_addr[3] = 20;
+
+
+    connect(remote_addr, 4301);
+
+}
diff --git a/palacios/src/geekos/queue.c b/palacios/src/geekos/queue.c
new file mode 100644 (file)
index 0000000..ed1a664
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * This file is part of the Palacios Virtual Machine Monitor developed
+ * by the V3VEE Project with funding from the United States National 
+ * Science Foundation and the Department of Energy.  
+ *
+ * The V3VEE Project is a joint project between Northwestern University
+ * and the University of New Mexico.  You can find out more at 
+ * http://www.v3vee.org
+ *
+ * Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu> 
+ * Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org> 
+ * All rights reserved.
+ *
+ * Author: Jack Lange <jarusl@cs.northwestern.edu>
+ *
+ * This is free software.  You are permitted to use,
+ * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+ */
+
+#include <geekos/queue.h>
+
+
+
+void init_queue(struct gen_queue * queue) {
+  queue->num_entries = 0;
+  INIT_LIST_HEAD(&(queue->entries));
+}
+
+
+struct gen_queue * create_queue() {
+  struct gen_queue * tmp_queue = Malloc(sizeof(struct gen_queue));
+  init_queue(tmp_queue);
+  return tmp_queue;
+}
+
+void enqueue(struct gen_queue * queue, void * entry) {
+  struct queue_entry * q_entry = Malloc(sizeof(struct queue_entry));
+
+  q_entry->entry = entry;
+  list_add_tail(&(q_entry->entry_list), &(queue->entries));
+  queue->num_entries++;
+}
+
+
+void * dequeue(struct gen_queue * queue) {
+  void * entry_val = 0;
+  
+  if (!list_empty(&(queue->entries))) {
+    struct list_head * q_entry = queue->entries.next;
+    struct queue_entry * tmp_entry = list_entry(q_entry, struct queue_entry, entry_list);
+
+    entry_val = tmp_entry->entry;
+    list_del(q_entry);
+    Free(tmp_entry);
+  }
+
+  return entry_val;
+}
diff --git a/palacios/src/geekos/testvm.s b/palacios/src/geekos/testvm.s
new file mode 100644 (file)
index 0000000..e2d5a44
--- /dev/null
@@ -0,0 +1,60 @@
+# -*- fundamental -*-
+# This file is part of the Palacios Virtual Machine Monitor developed
+# by the V3VEE Project with funding from the United States National 
+# Science Foundation and the Department of Energy.  
+#
+# The V3VEE Project is a joint project between Northwestern University
+# and the University of New Mexico.  You can find out more at 
+# http://www.v3vee.org
+#
+# Copyright (c) 2008, Jack Lange <jarusl@cs.northwestern.edu> 
+# Copyright (c) 2008, The V3VEE Project <http://www.v3vee.org> 
+# All rights reserved.
+#
+# Author: Jack Lange <jarusl@cs.northwestern.edu>
+#
+# This is free software.  You are permitted to use,
+# redistribute, and modify it as specified in the file "V3VEE_LICENSE".
+
+
+.global MyBuzzVM
+MyBuzzVM:
+       pushl   %ebp
+       movl    %esp, %ebp
+       pushl   %esi
+       pushl   %ebx
+       inb $97, %al            
+       movl    $97, %ecx
+       movb    %al, %bl
+       orl     $2, %ebx
+       movl    %eax, %esi
+.L24:
+       movb    %bl, %al
+       movl    %ecx, %edx
+       outb    %al, %dx
+       movl    $0, %edx
+.L30:
+       incl    %edx
+       cmpl    $999999, %edx
+       jle     .L30
+       movl    %esi, %eax
+       movl    %ecx, %edx
+       outb %al, %dx
+       movl    $0, %edx
+.L35:
+       incl    %edx
+       cmpl    $999999, %edx
+       jle     .L35
+       jmp     .L24
+       
+       
+       
+       
+       
+       
+       
+       
+       
+       
+       
+       
index 5114521..f7ae6e3 100644 (file)
@@ -17,6 +17,7 @@
  * redistribute, and modify it as specified in the file "V3VEE_LICENSE".
  */
 
+
 #include <palacios/vmm_config.h>
 #include <palacios/vmm.h>
 #include <palacios/vmm_debug.h>