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.


Updates to linux module to use linux print macros
[palacios.git] / linux_module / linux-exts.c
index d6409b8..e227107 100644 (file)
@@ -17,6 +17,18 @@ struct vm_ext {
 };
 
 
+void * get_vm_ext_data(struct v3_guest * guest, char * ext_name) {
+    struct vm_ext * ext = NULL;
+
+    list_for_each_entry(ext, &(guest->exts), node) {
+       if (strncmp(ext->impl->name, ext_name, strlen(ext->impl->name)) == 0) {
+           return ext->vm_data;
+       }
+    }
+
+    return NULL;
+}
+
 
 int init_vm_extensions(struct v3_guest * guest) {
     extern struct linux_ext * __start__lnx_exts[];
@@ -29,15 +41,16 @@ int init_vm_extensions(struct v3_guest * guest) {
 
        if (ext_impl->guest_init == NULL) {
            // We can have global extensions without per guest state
+           ext_impl = __start__lnx_exts[++i];
            continue;
        }
        
-       printk("Registering Linux Extension (%s)\n", ext_impl->name);
+       INFO("Registering Linux Extension (%s)\n", ext_impl->name);
 
        ext = kmalloc(sizeof(struct vm_ext), GFP_KERNEL);
        
        if (!ext) {
-           printk("Error allocating VM extension (%s)\n", ext_impl->name);
+           WARNING("Error allocating VM extension (%s)\n", ext_impl->name);
            return -1;
        }
 
@@ -54,6 +67,7 @@ int init_vm_extensions(struct v3_guest * guest) {
 }
 
 
+
 int deinit_vm_extensions(struct v3_guest * guest) {
     struct vm_ext * ext = NULL;
     struct vm_ext * tmp = NULL;
@@ -62,7 +76,7 @@ int deinit_vm_extensions(struct v3_guest * guest) {
        if (ext->impl->guest_deinit) {
            ext->impl->guest_deinit(guest, ext->vm_data);
        } else {
-           printk("WARNING: Extension %s, does not have a guest deinit function\n", ext->impl->name);
+           WARNING("WARNING: Extension %s, does not have a guest deinit function\n", ext->impl->name);
        }
 
        list_del(&(ext->node));
@@ -80,10 +94,10 @@ int init_lnx_extensions( void ) {
 
     while (tmp_ext != __stop__lnx_exts[0]) {
 
-       printk("tmp_ext=%p\n", tmp_ext);
+       DEBUG("tmp_ext=%p\n", tmp_ext);
 
        if (tmp_ext->init != NULL) {
-           printk("Registering Linux Extension (%s)\n", tmp_ext->name);
+           INFO("Registering Linux Extension (%s)\n", tmp_ext->name);
            tmp_ext->init();
        }
 
@@ -101,11 +115,11 @@ int deinit_lnx_extensions( void ) {
     int i = 0;
 
     while (tmp_ext != __stop__lnx_exts[0]) {
-       printk("Cleaning up Linux Extension (%s)\n", tmp_ext->name);
+       INFO("Cleaning up Linux Extension (%s)\n", tmp_ext->name);
        if (tmp_ext->deinit != NULL) {
            tmp_ext->deinit();
        } else {
-           printk("WARNING: Extension %s does not have a global deinit function\n", tmp_ext->name);
+           WARNING("WARNING: Extension %s does not have a global deinit function\n", tmp_ext->name);
        }
 
        tmp_ext = __start__lnx_exts[++i];