/[dynamips]/trunk/vm.h
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 /trunk/vm.h

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

upstream/dynamips-0.2.7/vm.h revision 10 by dpavlin, Sat Oct 6 16:29:14 2007 UTC upstream/dynamips-0.2.8-RC1/vm.h revision 11 by dpavlin, Sat Oct 6 16:33:40 2007 UTC
# Line 14  Line 14 
14  #include "memory.h"  #include "memory.h"
15  #include "cpu.h"  #include "cpu.h"
16  #include "dev_vtty.h"  #include "dev_vtty.h"
17    #include "cisco_eeprom.h"
18    #include "cisco_card.h"
19    #include "rommon_var.h"
20    
21  #define VM_PAGE_SHIFT  12  #define VM_PAGE_SHIFT  12
22  #define VM_PAGE_SIZE   (1 << VM_PAGE_SHIFT)  #define VM_PAGE_SIZE   (1 << VM_PAGE_SHIFT)
# Line 56  enum { Line 59  enum {
59     VM_STATUS_SUSPENDED,       /* VM is suspended */     VM_STATUS_SUSPENDED,       /* VM is suspended */
60  };  };
61    
 /* VM types */  
 enum {  
    VM_TYPE_C7200 = 0,  
    VM_TYPE_C3600,  
    VM_TYPE_C2691,  
    VM_TYPE_C3725,  
    VM_TYPE_C3745,  
    VM_TYPE_C2600,  
    VM_TYPE_MSFC1,  
    VM_TYPE_PPC32_TEST,  
 };  
   
62  /* Ghost RAM status */  /* Ghost RAM status */
63  enum {  enum {
64     VM_GHOST_RAM_NONE = 0,     VM_GHOST_RAM_NONE = 0,
# Line 78  enum { Line 69  enum {
69  /* Timer IRQ check interval */  /* Timer IRQ check interval */
70  #define VM_TIMER_IRQ_CHECK_ITV  1000  #define VM_TIMER_IRQ_CHECK_ITV  1000
71    
72    /* Max slots per VM */
73    #define VM_MAX_SLOTS  16
74    
75  /* forward declarations */  /* forward declarations */
76  typedef struct vm_obj vm_obj_t;  typedef struct vm_obj vm_obj_t;
77    
# Line 95  struct vm_obj { Line 89  struct vm_obj {
89  /* VM instance */  /* VM instance */
90  struct vm_instance {  struct vm_instance {
91     char *name;     char *name;
92     int type;                       /* C7200, C3600, ... */     vm_platform_t *platform;       /* Platform specific helpers */
93     int status;                     /* Instance status */     int status;                    /* Instance status */
94     int instance_id;                /* Instance Identifier */     int instance_id;               /* Instance Identifier */
95     char *lock_file;                /* Lock file */     char *lock_file;               /* Lock file */
96     char *log_file;                 /* Log filename */     char *log_file;                /* Log filename */
97     int log_file_enabled;           /* Logging enabled */     int log_file_enabled;          /* Logging enabled */
98     u_int ram_size,rom_size;        /* RAM and ROM size in Mb */     u_int ram_size,rom_size;       /* RAM and ROM size in Mb */
99     u_int iomem_size;               /* IOMEM size in Mb */     u_int iomem_size;              /* IOMEM size in Mb */
100     u_int nvram_size;               /* NVRAM size in Kb */     u_int nvram_size;              /* NVRAM size in Kb */
101     u_int pcmcia_disk_size[2];      /* PCMCIA disk0 and disk1 sizes (in Mb) */     u_int pcmcia_disk_size[2];     /* PCMCIA disk0 and disk1 sizes (in Mb) */
102     u_int conf_reg,conf_reg_setup;  /* Config register */     u_int conf_reg,conf_reg_setup; /* Config register */
103     u_int clock_divisor;            /* Clock Divisor (see cp0.c) */     u_int clock_divisor;           /* Clock Divisor (see cp0.c) */
104     u_int ram_mmap;                 /* Memory-mapped RAM ? */     u_int ram_mmap;                /* Memory-mapped RAM ? */
105     u_int restart_ios;              /* Restart IOS on reload ? */     u_int restart_ios;             /* Restart IOS on reload ? */
106     u_int elf_machine_id;           /* ELF machine identifier */     u_int elf_machine_id;          /* ELF machine identifier */
107     u_int exec_area_size;           /* Size of execution area for CPU */     u_int exec_area_size;          /* Size of execution area for CPU */
108     m_uint32_t ios_entry_point;     /* IOS entry point */     m_uint32_t ios_entry_point;    /* IOS entry point */
109     char *ios_image;                /* IOS image filename */     char *ios_image;               /* IOS image filename */
110     char *ios_config;               /* IOS configuration file */     char *ios_config;              /* IOS configuration file */
111     char *rom_filename;             /* ROM filename */     char *rom_filename;            /* ROM filename */
112     char *sym_filename;             /* Symbol filename */     char *sym_filename;            /* Symbol filename */
113     FILE *lock_fd,*log_fd;          /* Lock/Log file descriptors */     FILE *lock_fd,*log_fd;         /* Lock/Log file descriptors */
114     int debug_level;                /* Debugging Level */     int debug_level;               /* Debugging Level */
115     int jit_use;                    /* CPUs use JIT */     int jit_use;                   /* CPUs use JIT */
116     int sparse_mem;                 /* Use sparse virtual memory */     int sparse_mem;                /* Use sparse virtual memory */
117       u_int nm_iomem_size;           /* IO mem size to be passed to Smart Init */
118    
119       /* ROMMON variables */
120       struct rommon_var_list rommon_vars;
121    
122     /* Memory chunks */     /* Memory chunks */
123     vm_chunk_t *chunks;     vm_chunk_t *chunks;
# Line 139  struct vm_instance { Line 137  struct vm_instance {
137     void (*set_irq)(vm_instance_t *vm,u_int irq);     void (*set_irq)(vm_instance_t *vm,u_int irq);
138     void (*clear_irq)(vm_instance_t *vm,u_int irq);     void (*clear_irq)(vm_instance_t *vm,u_int irq);
139    
140       /* Slots for PA/NM/... */
141       u_int nr_slots;
142       u_int slots_type;
143       struct cisco_card *slots[VM_MAX_SLOTS];
144       struct cisco_card_driver **slots_drivers;
145       struct pci_bus *slots_pci_bus[VM_MAX_SLOTS];
146    
147     /* Filename for ghosted RAM */     /* Filename for ghosted RAM */
148     char *ghost_ram_filename;     char *ghost_ram_filename;
149        
# Line 168  struct vm_instance { Line 173  struct vm_instance {
173     /* Space reserved in NVRAM by ROM monitor */     /* Space reserved in NVRAM by ROM monitor */
174     u_int nvram_rom_space;     u_int nvram_rom_space;
175    
    /* Extract and push IOS configuration */  
    ssize_t (*nvram_extract_config)(vm_instance_t *vm,char **buffer);  
    int (*nvram_push_config)(vm_instance_t *vm,char *buffer,size_t len);  
   
176     /* Chassis cookie (for c2600 and maybe other routers) */     /* Chassis cookie (for c2600 and maybe other routers) */
177     m_uint16_t chassis_cookie[64];     m_uint16_t chassis_cookie[64];
178    
# Line 182  struct vm_instance { Line 183  struct vm_instance {
183     struct vm_obj *vm_object_list;       struct vm_obj *vm_object_list;  
184  };  };
185    
186  #define VM_C7200(vm) ((c7200_t *)vm->hw_data)  /* VM Platform definition */
187  #define VM_C3600(vm) ((c3600_t *)vm->hw_data)  struct vm_platform {
188  #define VM_C2691(vm) ((c2691_t *)vm->hw_data)     char *name;
189  #define VM_C3725(vm) ((c3725_t *)vm->hw_data)     char *log_name;
190  #define VM_C3745(vm) ((c3745_t *)vm->hw_data)     char *cli_name;
191  #define VM_C2600(vm) ((c2600_t *)vm->hw_data)     int (*create_instance)(vm_instance_t *vm);
192  #define VM_MSFC1(vm) ((msfc1_t *)vm->hw_data)     int (*delete_instance)(vm_instance_t *vm);
193       int (*init_instance)(vm_instance_t *vm);
194       int (*stop_instance)(vm_instance_t *vm);
195       ssize_t (*nvram_extract_config)(vm_instance_t *vm,u_char **buffer);
196       int (*nvram_push_config)(vm_instance_t *vm,u_char *buffer,size_t len);
197       u_int (*get_mac_addr_msb)(void);
198       void (*save_config)(vm_instance_t *vm,FILE *fd);
199       int (*cli_parse_options)(vm_instance_t *vm,int option);
200       void (*cli_show_options)(vm_instance_t *vm);
201       void (*show_spec_drivers)(void);
202    };
203    
204    /* VM platform list item */
205    struct vm_platform_list {
206       struct vm_platform_list *next;
207       struct vm_platform *platform;
208    };
209    
210  extern int vm_file_naming_type;  extern int vm_file_naming_type;
211    
# Line 254  int vm_create_log(vm_instance_t *vm); Line 271  int vm_create_log(vm_instance_t *vm);
271  /* Error message */  /* Error message */
272  void vm_error(vm_instance_t *vm,char *format,...);  void vm_error(vm_instance_t *vm,char *format,...);
273    
 /* Create a new VM instance */  
 vm_instance_t *vm_create(char *name,int instance_id,int machine_type);  
   
274  /* Shutdown hardware resources used by a VM */  /* Shutdown hardware resources used by a VM */
275  int vm_hardware_shutdown(vm_instance_t *vm);  int vm_hardware_shutdown(vm_instance_t *vm);
276    
# Line 348  int vm_nvram_push_config(vm_instance_t * Line 362  int vm_nvram_push_config(vm_instance_t *
362  /* Save general VM configuration into the specified file */  /* Save general VM configuration into the specified file */
363  void vm_save_config(vm_instance_t *vm,FILE *fd);  void vm_save_config(vm_instance_t *vm,FILE *fd);
364    
365    /* Find a platform */
366    vm_platform_t *vm_platform_find(char *name);
367    
368    /* Find a platform given its CLI name */
369    vm_platform_t *vm_platform_find_cli_name(char *name);
370    
371    /* Register a platform */
372    int vm_platform_register(vm_platform_t *platform);
373    
374    /* Create an instance of the specified type */
375    vm_instance_t *vm_create_instance(char *name,int instance_id,char *type);
376    
377    /* Delete a VM instance */
378    int vm_delete_instance(char *name);
379    
380    /* Initialize a VM instance */
381    int vm_init_instance(vm_instance_t *vm);
382    
383    /* Stop a VM instance */
384    int vm_stop_instance(vm_instance_t *vm);
385    
386    /* Delete all VM instances */
387    int vm_delete_all_instances(void);
388    
389    /* Save all VM configs */
390    int vm_save_config_all(FILE *fd);
391    
392  #endif  #endif

Legend:
Removed from v.10  
changed lines
  Added in v.11

  ViewVC Help
Powered by ViewVC 1.1.26