Allow to specify a character special device as a core file.
This enable us to use /dev/fwmem* as a core file. e.g. ps -M /dev/fwmem0.0 -N kernel.debug dmesg -M /dev/fwmem0.0 -N kernel.debug gdb -k -c /dev/fwmem0.0 kernel.debug You need to set target EUI64 in hw.firewire.fwmem.eui64_hi/lo before opening the device. On the target arch, (PCI) bus address must be equivalent to physical address. (We cannot use this for sparc64 because of IOMMU.) No objection in: -audit
This commit is contained in:
parent
c277c40b63
commit
eb07797588
@ -192,11 +192,8 @@ _kvm_open(kd, uf, mf, flag, errout)
|
||||
*/
|
||||
if (strcmp(mf, _PATH_DEVNULL) == 0) {
|
||||
kd->vmfd = open(_PATH_DEVNULL, O_RDONLY);
|
||||
} else if (strcmp(mf, _PATH_MEM) != 0) {
|
||||
_kvm_err(kd, kd->program,
|
||||
"%s: not physical memory device", mf);
|
||||
goto failed;
|
||||
} else {
|
||||
return (kd);
|
||||
} else if (strcmp(mf, _PATH_MEM) == 0) {
|
||||
if ((kd->vmfd = open(_PATH_KMEM, flag)) < 0) {
|
||||
_kvm_syserr(kd, kd->program, "%s", _PATH_KMEM);
|
||||
goto failed;
|
||||
@ -205,24 +202,24 @@ _kvm_open(kd, uf, mf, flag, errout)
|
||||
_kvm_syserr(kd, kd->program, "%s", _PATH_KMEM);
|
||||
goto failed;
|
||||
}
|
||||
return (kd);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* This is a crash dump.
|
||||
* Initialize the virtual address translation machinery,
|
||||
* but first setup the namelist fd.
|
||||
*/
|
||||
if ((kd->nlfd = open(uf, O_RDONLY, 0)) < 0) {
|
||||
_kvm_syserr(kd, kd->program, "%s", uf);
|
||||
goto failed;
|
||||
}
|
||||
if (fcntl(kd->nlfd, F_SETFD, FD_CLOEXEC) < 0) {
|
||||
_kvm_syserr(kd, kd->program, "%s", uf);
|
||||
goto failed;
|
||||
}
|
||||
if (_kvm_initvtop(kd) < 0)
|
||||
goto failed;
|
||||
}
|
||||
/*
|
||||
* This is a crash dump.
|
||||
* Initialize the virtual address translation machinery,
|
||||
* but first setup the namelist fd.
|
||||
*/
|
||||
if ((kd->nlfd = open(uf, O_RDONLY, 0)) < 0) {
|
||||
_kvm_syserr(kd, kd->program, "%s", uf);
|
||||
goto failed;
|
||||
}
|
||||
if (fcntl(kd->nlfd, F_SETFD, FD_CLOEXEC) < 0) {
|
||||
_kvm_syserr(kd, kd->program, "%s", uf);
|
||||
goto failed;
|
||||
}
|
||||
if (_kvm_initvtop(kd) < 0)
|
||||
goto failed;
|
||||
return (kd);
|
||||
failed:
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user