/[dynamips]/upstream/dynamips-0.2.6-RC3/dev_ram.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /upstream/dynamips-0.2.6-RC3/dev_ram.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

upstream/dynamips-0.2.6-RC2/dev_ram.c revision 3 by dpavlin, Sat Oct 6 16:05:34 2007 UTC upstream/dynamips-0.2.6-RC3/dev_ram.c revision 4 by dpavlin, Sat Oct 6 16:06:49 2007 UTC
# Line 20  struct ram_data { Line 20  struct ram_data {
20     vm_obj_t vm_obj;     vm_obj_t vm_obj;
21     struct vdevice *dev;     struct vdevice *dev;
22     char *filename;     char *filename;
23       int delete_file;
24  };  };
25    
26  /* Shutdown a RAM device */  /* Shutdown a RAM device */
# Line 31  void dev_ram_shutdown(vm_instance_t *vm, Line 32  void dev_ram_shutdown(vm_instance_t *vm,
32        free(d->dev);        free(d->dev);
33    
34        /* Remove filename used to virtualize RAM */        /* Remove filename used to virtualize RAM */
35        if (d->filename) {        if (d->filename && d->delete_file) {
36           unlink(d->filename);           unlink(d->filename);
37           free(d->filename);           free(d->filename);
38        }        }
# Line 42  void dev_ram_shutdown(vm_instance_t *vm, Line 43  void dev_ram_shutdown(vm_instance_t *vm,
43  }  }
44    
45  /* Initialize a RAM zone */  /* Initialize a RAM zone */
46  int dev_ram_init(vm_instance_t *vm,char *name,int use_mmap,  int dev_ram_init(vm_instance_t *vm,char *name,int use_mmap,int delete_file,
47                   m_uint64_t paddr,m_uint32_t len)                   char *alternate_name,m_uint64_t paddr,m_uint32_t len)
48  {  {
49     struct ram_data *d;     struct ram_data *d;
50    
# Line 54  int dev_ram_init(vm_instance_t *vm,char Line 55  int dev_ram_init(vm_instance_t *vm,char
55     }     }
56    
57     memset(d,0,sizeof(*d));     memset(d,0,sizeof(*d));
58       d->delete_file = delete_file;
59    
60     vm_object_init(&d->vm_obj);     vm_object_init(&d->vm_obj);
61     d->vm_obj.name = name;     d->vm_obj.name = name;
62     d->vm_obj.data = d;     d->vm_obj.data = d;
63     d->vm_obj.shutdown = (vm_shutdown_t)dev_ram_shutdown;     d->vm_obj.shutdown = (vm_shutdown_t)dev_ram_shutdown;
64    
65     if (use_mmap && !(d->filename = vm_build_filename(vm,name))) {     if (use_mmap) {
66        fprintf(stderr,"RAM: unable to create filename.\n");        if (!alternate_name)
67        goto err_filename;           d->filename = vm_build_filename(vm,name);
68          else
69             d->filename = strdup(alternate_name);
70    
71          if (!d->filename) {
72             fprintf(stderr,"RAM: unable to create filename.\n");
73             goto err_filename;
74          }
75     }     }
76    
77     if (!(d->dev = dev_create_ram(vm,name,d->filename,paddr,len))) {     if (!(d->dev = dev_create_ram(vm,name,d->filename,paddr,len))) {
# Line 70  int dev_ram_init(vm_instance_t *vm,char Line 79  int dev_ram_init(vm_instance_t *vm,char
79        goto err_dev_create;        goto err_dev_create;
80     }     }
81    
82       vm_object_add(vm,&d->vm_obj);
83       return(0);
84    
85     err_dev_create:
86       free(d->filename);
87     err_filename:
88       free(d);
89       return(-1);
90    }
91    
92    /* Initialize a ghosted RAM zone */
93    int dev_ram_ghost_init(vm_instance_t *vm,char *name,char *filename,
94                           m_uint64_t paddr,m_uint32_t len)
95    {
96       struct ram_data *d;
97    
98       /* allocate the private data structure */
99       if (!filename || !(d = malloc(sizeof(*d)))) {
100          fprintf(stderr,"RAM_ghost: unable to create device.\n");
101          return(-1);
102       }
103    
104       memset(d,0,sizeof(*d));
105       d->delete_file = FALSE;
106    
107       if (!(d->filename = strdup(filename)))
108          goto err_filename;
109    
110       vm_object_init(&d->vm_obj);
111       d->vm_obj.name = name;
112       d->vm_obj.data = d;
113       d->vm_obj.shutdown = (vm_shutdown_t)dev_ram_shutdown;
114    
115       if (!(d->dev = dev_create_ghost_ram(vm,name,d->filename,paddr,len))) {
116          fprintf(stderr,"RAM_ghost: unable to create device.\n");
117          goto err_dev_create;
118       }
119    
120     vm_object_add(vm,&d->vm_obj);     vm_object_add(vm,&d->vm_obj);
121     return(0);     return(0);
122    

Legend:
Removed from v.3  
changed lines
  Added in v.4

  ViewVC Help
Powered by ViewVC 1.1.26