mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
bitkeeper revision 1.105.1.5 (3e5f78b2JrROb7627ksGnXNIWgAM3w)
domain builder fix
This commit is contained in:
1 parent
6e00eab701
commit
a0ad7109ca
3 files changed
+160
-37
No files matched your search
@@ -22,3 +22,134 @@ xenolinux-2.4.16-sparse/scripts/kconfig.tk
|
||||
xen-2.4.16/foo
|
||||
xen-2.4.16/common/domain.c.smh
|
||||
URK
|
||||
tools/domain_builder/dom_builder.o
|
||||
tools/domain_builder/dom_kill.o
|
||||
tools/domain_builder/domain_builder
|
||||
tools/domain_builder/kill_domain
|
||||
xen/arch/i386/acpitable.o
|
||||
xen/arch/i386/apic.o
|
||||
xen/arch/i386/arch.o
|
||||
xen/arch/i386/boot/boot.o
|
||||
xen/arch/i386/delay.o
|
||||
xen/arch/i386/entry.o
|
||||
xen/arch/i386/extable.o
|
||||
xen/arch/i386/i387.o
|
||||
xen/arch/i386/i8259.o
|
||||
xen/arch/i386/idle0_task.o
|
||||
xen/arch/i386/io_apic.o
|
||||
xen/arch/i386/ioremap.o
|
||||
xen/arch/i386/irq.o
|
||||
xen/arch/i386/mm.o
|
||||
xen/arch/i386/mpparse.o
|
||||
xen/arch/i386/pci-dma.o
|
||||
xen/arch/i386/pci-i386.o
|
||||
xen/arch/i386/pci-irq.o
|
||||
xen/arch/i386/pci-pc.o
|
||||
xen/arch/i386/process.o
|
||||
xen/arch/i386/rwlock.o
|
||||
xen/arch/i386/setup.o
|
||||
xen/arch/i386/smp.o
|
||||
xen/arch/i386/smpboot.o
|
||||
xen/arch/i386/time.o
|
||||
xen/arch/i386/trampoline.o
|
||||
xen/arch/i386/traps.o
|
||||
xen/arch/i386/usercopy.o
|
||||
xen/common/ac_timer.o
|
||||
xen/common/block.o
|
||||
xen/common/brlock.o
|
||||
xen/common/common.o
|
||||
xen/common/dom0_ops.o
|
||||
xen/common/domain.o
|
||||
xen/common/domain_page.o
|
||||
xen/common/event.o
|
||||
xen/common/kernel.o
|
||||
xen/common/keyhandler.o
|
||||
xen/common/lib.o
|
||||
xen/common/memory.o
|
||||
xen/common/network.o
|
||||
xen/common/page_alloc.o
|
||||
xen/common/perfc.o
|
||||
xen/common/resource.o
|
||||
xen/common/schedule.o
|
||||
xen/common/slab.o
|
||||
xen/common/softirq.o
|
||||
xen/common/timer.o
|
||||
xen/common/vsprintf.o
|
||||
xen/drivers/block/blkpg.o
|
||||
xen/drivers/block/driver.o
|
||||
xen/drivers/block/elevator.o
|
||||
xen/drivers/block/genhd.o
|
||||
xen/drivers/block/ll_rw_blk.o
|
||||
xen/drivers/block/xen_block.o
|
||||
xen/drivers/char/driver.o
|
||||
xen/drivers/char/xen_kbd.o
|
||||
xen/drivers/char/xen_serial.o
|
||||
xen/drivers/ide/driver.o
|
||||
xen/drivers/ide/ide-disk.o
|
||||
xen/drivers/ide/ide-dma.o
|
||||
xen/drivers/ide/ide-features.o
|
||||
xen/drivers/ide/ide-geometry.o
|
||||
xen/drivers/ide/ide-pci.o
|
||||
xen/drivers/ide/ide-probe.o
|
||||
xen/drivers/ide/ide-taskfile.o
|
||||
xen/drivers/ide/ide-xeno.o
|
||||
xen/drivers/ide/ide.o
|
||||
xen/drivers/ide/piix.o
|
||||
xen/drivers/net/3c59x.o
|
||||
xen/drivers/net/Space.o
|
||||
xen/drivers/net/driver.o
|
||||
xen/drivers/net/e1000/e1000.o
|
||||
xen/drivers/net/e1000/e1000_ethtool.o
|
||||
xen/drivers/net/e1000/e1000_hw.o
|
||||
xen/drivers/net/e1000/e1000_main.o
|
||||
xen/drivers/net/e1000/e1000_param.o
|
||||
xen/drivers/net/ne/8390.o
|
||||
xen/drivers/net/ne/ne.o
|
||||
xen/drivers/net/ne/ne_drv.o
|
||||
xen/drivers/net/net_init.o
|
||||
xen/drivers/net/setup.o
|
||||
xen/drivers/net/tg3.o
|
||||
xen/drivers/pci/classlist.h
|
||||
xen/drivers/pci/compat.o
|
||||
xen/drivers/pci/devlist.h
|
||||
xen/drivers/pci/driver.o
|
||||
xen/drivers/pci/gen-devlist
|
||||
xen/drivers/pci/names.o
|
||||
xen/drivers/pci/pci.o
|
||||
xen/drivers/pci/quirks.o
|
||||
xen/drivers/pci/setup-res.o
|
||||
xen/drivers/scsi/aacraid/aachba.o
|
||||
xen/drivers/scsi/aacraid/aacraid.o
|
||||
xen/drivers/scsi/aacraid/commctrl.o
|
||||
xen/drivers/scsi/aacraid/comminit.o
|
||||
xen/drivers/scsi/aacraid/commsup.o
|
||||
xen/drivers/scsi/aacraid/dpcsup.o
|
||||
xen/drivers/scsi/aacraid/linit.o
|
||||
xen/drivers/scsi/aacraid/rx.o
|
||||
xen/drivers/scsi/aacraid/sa.o
|
||||
xen/drivers/scsi/constants.o
|
||||
xen/drivers/scsi/driver.o
|
||||
xen/drivers/scsi/hosts.o
|
||||
xen/drivers/scsi/scsi.o
|
||||
xen/drivers/scsi/scsi_dma.o
|
||||
xen/drivers/scsi/scsi_error.o
|
||||
xen/drivers/scsi/scsi_ioctl.o
|
||||
xen/drivers/scsi/scsi_lib.o
|
||||
xen/drivers/scsi/scsi_merge.o
|
||||
xen/drivers/scsi/scsi_proc.o
|
||||
xen/drivers/scsi/scsi_queue.o
|
||||
xen/drivers/scsi/scsi_scan.o
|
||||
xen/drivers/scsi/scsi_syms.o
|
||||
xen/drivers/scsi/scsicam.o
|
||||
xen/drivers/scsi/sd.o
|
||||
xen/image
|
||||
xen/image.gz
|
||||
xen/include/asm
|
||||
xen/include/linux
|
||||
xen/net/dev.o
|
||||
xen/net/dev_mcast.o
|
||||
xen/net/devinit.o
|
||||
xen/net/eth.o
|
||||
xen/net/network.o
|
||||
xen/net/skbuff.o
|
||||
xen/tools/elf-reloc
|
||||
@@ -52,10 +52,10 @@ static void dom_mem_cleanup(dom_mem_t * dom_mem)
|
||||
if(mem_fd < 0){
|
||||
perror(PERR_STRING);
|
||||
}
|
||||
|
||||
if(write(mem_fd, (dom_mem_t *)dom_mem, sizeof(dom_mem_t)) < 0){
|
||||
dbstatus("Error unmapping domain's memory.\n");
|
||||
}
|
||||
|
||||
if(write(mem_fd, (dom_mem_t *)dom_mem, sizeof(dom_mem_t)) < 0){
|
||||
dbstatus("Error unmapping domain's memory.\n");
|
||||
}
|
||||
|
||||
close(mem_fd);
|
||||
}
|
||||
@@ -163,7 +163,7 @@ static dom0_newdomain_t * create_new_domain(long req_mem)
|
||||
close(id_fd);
|
||||
|
||||
sprintf(cmd_path, "Reserved %ld kbytes memory and assigned id %d to the"
|
||||
"new domain.", req_mem, dom_data->domain);
|
||||
" new domain.", req_mem, dom_data->domain);
|
||||
dbstatus(cmd_path);
|
||||
|
||||
return dom_data;
|
||||
@@ -386,6 +386,7 @@ static int launch_domain(dom_meminfo_t * meminfo)
|
||||
dbstatus("Launched the new domain!");
|
||||
|
||||
close(cmd_fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
@@ -401,51 +402,45 @@ int main(int argc, char **argv)
|
||||
int kernel_fd;
|
||||
int count;
|
||||
int cmd_len;
|
||||
int ret = 0;
|
||||
int rc = -1;
|
||||
|
||||
unsigned long addr;
|
||||
unsigned long addr;
|
||||
|
||||
if(argc < 4){
|
||||
if(argc < 4) {
|
||||
dberr("Usage: dom_builder <kbytes_mem> <image> <num_vifs> "
|
||||
"<boot_params>\n");
|
||||
ret = -1;
|
||||
"<boot_params>\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* create new domain and set up all the neccessary mappings */
|
||||
|
||||
kernel_fd = do_kernel_chcks(argv[2], atol(argv[1]), &load_addr, &ksize);
|
||||
if(kernel_fd < 0){
|
||||
ret = -1;
|
||||
if(kernel_fd < 0) {
|
||||
rc = errno;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
/* request the creation of new domain */
|
||||
dom_data = create_new_domain(atol(argv[1]));
|
||||
if(dom_data == 0){
|
||||
ret = -1;
|
||||
if(!(dom_data = create_new_domain(atol(argv[1]))))
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* map domain's memory */
|
||||
if(map_dom_mem(dom_data->pg_head, dom_data->memory_kb >> (PAGE_SHIFT - 10),
|
||||
dom_data->domain, &dom_os_image)){
|
||||
ret = -1;
|
||||
if(map_dom_mem(dom_data->pg_head, dom_data->memory_kb >> (PAGE_SHIFT-10),
|
||||
dom_data->domain, &dom_os_image))
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* the following code does the actual domain building */
|
||||
meminfo = setup_guestos(dom_data->domain, kernel_fd, load_addr, ksize,
|
||||
&dom_os_image);
|
||||
if(meminfo == NULL){
|
||||
printf("Domain Builder: debug: meminfo NULL\n");
|
||||
ret = -1;
|
||||
dom_mem_cleanup(&dom_os_image);
|
||||
meminfo = setup_guestos(dom_data->domain, kernel_fd, load_addr,
|
||||
ksize, &dom_os_image);
|
||||
|
||||
/* and unmap the new domain's memory image since we no longer need it */
|
||||
dom_mem_cleanup(&dom_os_image);
|
||||
|
||||
if(!meminfo) {
|
||||
printf("Domain Builder: debug: meminfo NULL\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
dom_mem_cleanup(&dom_os_image);
|
||||
|
||||
meminfo->virt_load_addr = load_addr;
|
||||
meminfo->num_vifs = atoi(argv[3]);
|
||||
meminfo->cmd_line[0] = '\0';
|
||||
@@ -471,13 +466,11 @@ int main(int argc, char **argv)
|
||||
dbstatus(status);
|
||||
|
||||
/* and launch the domain */
|
||||
if(launch_domain(meminfo) != 0)
|
||||
ret = -1;
|
||||
|
||||
rc = launch_domain(meminfo);
|
||||
|
||||
out:
|
||||
if( ret >= 0 )
|
||||
if( rc >= 0 )
|
||||
return meminfo->domain;
|
||||
else
|
||||
return ret;
|
||||
return rc;
|
||||
}
|
||||
@@ -76,7 +76,7 @@ void halt_machine(u_char key, void *dev_id, struct pt_regs *regs)
|
||||
/* XXX SMH: this is keir's fault */
|
||||
static char *task_states[] =
|
||||
{
|
||||
"Running",
|
||||
"Runnable",
|
||||
"Interruptible Sleep",
|
||||
"Uninterruptible Sleep",
|
||||
NULL, "Stopped",
|
||||
@@ -104,9 +104,8 @@ void do_task_queues(u_char key, void *dev_id, struct pt_regs *regs)
|
||||
printk("Notifying guest...\n");
|
||||
set_bit(_EVENT_DEBUG, &s->events);
|
||||
}
|
||||
}
|
||||
} while ( (p = p->next_task) != &idle0_task );
|
||||
|
||||
while ( (p = p->next_task) != &idle0_task );
|
||||
read_unlock_irqrestore(&tasklist_lock, flags);
|
||||
}
|
||||
|
||||
|
||||