Fixed wrong %x to %lx.
This commit is contained in:
@ -222,7 +222,7 @@ int gencore(struct process *proc, void *regs,
|
|||||||
}
|
}
|
||||||
|
|
||||||
list_for_each_entry(range, &vm->vm_range_list, list) {
|
list_for_each_entry(range, &vm->vm_range_list, list) {
|
||||||
dkprintf("start:%x end:%x flag:%x objoff:%x\n",
|
dkprintf("start:%lx end:%lx flag:%lx objoff:%lx\n",
|
||||||
range->start, range->end, range->flag, range->objoff);
|
range->start, range->end, range->flag, range->objoff);
|
||||||
/* We omit reserved areas because they are only for
|
/* We omit reserved areas because they are only for
|
||||||
mckernel's internal use. */
|
mckernel's internal use. */
|
||||||
@ -235,18 +235,16 @@ int gencore(struct process *proc, void *regs,
|
|||||||
{
|
{
|
||||||
struct vm_regions region = proc->vm->region;
|
struct vm_regions region = proc->vm->region;
|
||||||
|
|
||||||
dkprintf("text: %x-%x\n", region.text_start, region.text_end);
|
dkprintf("text: %lx-%lx\n", region.text_start, region.text_end);
|
||||||
dkprintf("data: %x-%x\n", region.data_start, region.data_end);
|
dkprintf("data: %lx-%lx\n", region.data_start, region.data_end);
|
||||||
dkprintf("brk: %x-%x\n", region.brk_start, region.brk_end);
|
dkprintf("brk: %lx-%lx\n", region.brk_start, region.brk_end);
|
||||||
dkprintf("map: %x-%x\n", region.map_start, region.map_end);
|
dkprintf("map: %lx-%lx\n", region.map_start, region.map_end);
|
||||||
dkprintf("stack: %x-%x\n", region.stack_start, region.stack_end);
|
dkprintf("stack: %lx-%lx\n", region.stack_start, region.stack_end);
|
||||||
dkprintf("user: %x-%x\n\n", region.user_start, region.user_end);
|
dkprintf("user: %lx-%lx\n\n", region.user_start, region.user_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
dkprintf("now generate a core file image\n");
|
dkprintf("now generate a core file image\n");
|
||||||
|
|
||||||
#ifndef DUMMY
|
|
||||||
|
|
||||||
offset += sizeof(eh);
|
offset += sizeof(eh);
|
||||||
fill_elf_header(&eh, segs);
|
fill_elf_header(&eh, segs);
|
||||||
|
|
||||||
@ -310,12 +308,15 @@ int gencore(struct process *proc, void *regs,
|
|||||||
|
|
||||||
ct[0].addr = virt_to_phys(&eh); /* ELF header */
|
ct[0].addr = virt_to_phys(&eh); /* ELF header */
|
||||||
ct[0].len = 64;
|
ct[0].len = 64;
|
||||||
|
dkprintf("coretable[0]: %lx@%lx(%lx)\n", ct[0].len, ct[0].addr, &eh);
|
||||||
|
|
||||||
ct[1].addr = virt_to_phys(ph); /* program header table */
|
ct[1].addr = virt_to_phys(ph); /* program header table */
|
||||||
ct[1].len = phsize;
|
ct[1].len = phsize;
|
||||||
|
dkprintf("coretable[1]: %lx@%lx(%lx)\n", ct[1].len, ct[1].addr, ph);
|
||||||
|
|
||||||
ct[2].addr = virt_to_phys(note); /* NOTE segment */
|
ct[2].addr = virt_to_phys(note); /* NOTE segment */
|
||||||
ct[2].len = notesize;
|
ct[2].len = notesize;
|
||||||
|
dkprintf("coretable[2]: %lx@%lx(%lx)\n", ct[2].len, ct[2].addr, note);
|
||||||
|
|
||||||
i = 3; /* memory segments */
|
i = 3; /* memory segments */
|
||||||
list_for_each_entry(range, &vm->vm_range_list, list) {
|
list_for_each_entry(range, &vm->vm_range_list, list) {
|
||||||
@ -323,29 +324,12 @@ int gencore(struct process *proc, void *regs,
|
|||||||
continue;
|
continue;
|
||||||
ct[i].addr = virt_to_phys(range->start);
|
ct[i].addr = virt_to_phys(range->start);
|
||||||
ct[i].len = range->end - range->start;
|
ct[i].len = range->end - range->start;
|
||||||
|
dkprintf("coretable[%d]: %lx@%lx(%lx)\n", i, ct[i].len, ct[i].addr, range->start);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
*chunks = segs + 2;
|
*chunks = segs + 2;
|
||||||
|
|
||||||
#else /* dummy */
|
|
||||||
*coretable = kmalloc(sizeof(struct coretable) * 3, IHK_MC_AP_NOWAIT);
|
|
||||||
if (!*coretable) {
|
|
||||||
dkprintf("could not alloc a coretable.\n");
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
ct[0].len = 8;
|
|
||||||
ct[0].addr = virt_to_phys("this is ");
|
|
||||||
ct[1].len = 7;
|
|
||||||
ct[1].addr = virt_to_phys("a test ");
|
|
||||||
ct[2].len = 15;
|
|
||||||
ct[2].addr = virt_to_phys("for coredump.\n");
|
|
||||||
|
|
||||||
dkprintf("generated a core table.\n");
|
|
||||||
|
|
||||||
*chunks = 3;
|
|
||||||
#endif
|
|
||||||
*coretable = ct;
|
*coretable = ct;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
|||||||
@ -1200,9 +1200,19 @@ static int writecore(ihk_os_t os, unsigned long rcoretable, int chunks) {
|
|||||||
/* map and write the chunk out */
|
/* map and write the chunk out */
|
||||||
rphys = coretable[i].addr;
|
rphys = coretable[i].addr;
|
||||||
size = coretable[i].len;
|
size = coretable[i].len;
|
||||||
|
dprintk("mapping remote %lx@%lx -> ", size, rphys);
|
||||||
phys = ihk_device_map_memory(dev, rphys, size);
|
phys = ihk_device_map_memory(dev, rphys, size);
|
||||||
|
dprintk("physical %lx, ", phys);
|
||||||
pt = ihk_device_map_virtual(dev, phys, size, NULL, 0);
|
pt = ihk_device_map_virtual(dev, phys, size, NULL, 0);
|
||||||
ret = file->f_op->write(file, pt, size, &file->f_pos);
|
dprintk("virtual %lx\n", pt);
|
||||||
|
if (pt != NULL) {
|
||||||
|
ret = file->f_op->write(file, pt, size, &file->f_pos);
|
||||||
|
} else {
|
||||||
|
dprintk("cannot map physical memory(%lx) to virtual memory.\n",
|
||||||
|
phys);
|
||||||
|
ihk_device_unmap_memory(dev, phys, size);
|
||||||
|
break;
|
||||||
|
}
|
||||||
/* unmap the chunk */
|
/* unmap the chunk */
|
||||||
ihk_device_unmap_virtual(dev, pt, size);
|
ihk_device_unmap_virtual(dev, pt, size);
|
||||||
ihk_device_unmap_memory(dev, phys, size);
|
ihk_device_unmap_memory(dev, phys, size);
|
||||||
|
|||||||
Reference in New Issue
Block a user