Lines Matching refs:kd

93 _kvm_maphdrs(kvm_t *kd, size_t sz)
95 struct vmstate *vm = kd->vmst;
104 vm->mmapbase = mmap(NULL, sz, PROT_READ, MAP_PRIVATE, kd->pmfd, 0);
106 _kvm_err(kd, kd->program, "cannot mmap corefile");
117 _kvm_pa2off(kvm_t *kd, uint64_t pa, off_t *ofs)
119 Elf_Ehdr *e = kd->vmst->mmapbase;
123 if (kd->rawdump) {
139 _kvm_freevtop(kvm_t *kd)
141 struct vmstate *vm = kd->vmst;
143 if (kd->vmst->minidump)
144 return (_kvm_minidump_freevtop(kd));
150 kd->vmst = NULL;
154 _kvm_initvtop(kvm_t *kd)
165 if (!kd->rawdump && pread(kd->pmfd, &minihdr, 8, 0) == 8)
167 return (_kvm_minidump_initvtop(kd));
169 kd->vmst = (struct vmstate *)_kvm_malloc(kd, sizeof(*kd->vmst));
170 if (kd->vmst == 0) {
171 _kvm_err(kd, kd->program, "cannot allocate vm");
174 kd->vmst->PTD = 0;
176 if (kd->rawdump == 0) {
177 if (_kvm_maphdrs(kd, sizeof(Elf_Ehdr)) == -1)
180 ehdr = kd->vmst->mmapbase;
182 if (_kvm_maphdrs(kd, hdrsz) == -1)
189 if (kvm_nlist(kd, nl) != 0)
197 if (kvm_nlist(kd, nl) == 0) {
200 if (kvm_read(kd, (nl[0].n_value - kernbase), &pa,
202 _kvm_err(kd, kd->program, "cannot read IdlePDPT");
205 PTD = _kvm_malloc(kd, 4 * PAGE_SIZE);
207 if (kvm_read(kd, pa + (i * sizeof(pa64)), &pa64,
209 _kvm_err(kd, kd->program, "Cannot read PDPT");
213 if (kvm_read(kd, pa64 & PG_FRAME_PAE,
215 _kvm_err(kd, kd->program, "cannot read PDPT");
220 kd->vmst->PTD = PTD;
221 kd->vmst->pae = 1;
226 if (kvm_nlist(kd, nl) != 0) {
227 _kvm_err(kd, kd->program, "bad namelist");
230 if (kvm_read(kd, (nl[0].n_value - kernbase), &pa,
232 _kvm_err(kd, kd->program, "cannot read IdlePTD");
235 PTD = _kvm_malloc(kd, PAGE_SIZE);
236 if (kvm_read(kd, pa, PTD, PAGE_SIZE) != PAGE_SIZE) {
237 _kvm_err(kd, kd->program, "cannot read PTD");
240 kd->vmst->PTD = PTD;
241 kd->vmst->pae = 0;
247 _kvm_vatop(kvm_t *kd, u_long va, off_t *pa)
262 vm = kd->vmst;
271 s = _kvm_pa2off(kd, va, pa);
273 _kvm_err(kd, kd->program,
283 _kvm_err(kd, kd->program, "_kvm_vatop: pde not valid");
296 s = _kvm_pa2off(kd, pde_pa, &ofs);
298 _kvm_err(kd, kd->program,
309 s = _kvm_pa2off(kd, pte_pa, &ofs);
311 _kvm_err(kd, kd->program, "_kvm_vatop: pdpe_pa not found");
316 if (lseek(kd->pmfd, ofs, 0) == -1) {
317 _kvm_syserr(kd, kd->program, "_kvm_vatop: lseek");
320 if (read(kd->pmfd, &pte, sizeof pte) != sizeof pte) {
321 _kvm_syserr(kd, kd->program, "_kvm_vatop: read");
325 _kvm_err(kd, kd->program, "_kvm_kvatop: pte not valid");
330 s =_kvm_pa2off(kd, a, pa);
332 _kvm_err(kd, kd->program, "_kvm_vatop: address not in dump");
338 _kvm_err(kd, 0, "invalid address (0x%lx)", va);
343 _kvm_vatop_pae(kvm_t *kd, u_long va, off_t *pa)
358 vm = kd->vmst;
367 s = _kvm_pa2off(kd, va, pa);
369 _kvm_err(kd, kd->program,
379 _kvm_err(kd, kd->program, "_kvm_kvatop_pae: pde not valid");
392 s = _kvm_pa2off(kd, pde_pa, &ofs);
394 _kvm_err(kd, kd->program,
405 s = _kvm_pa2off(kd, pte_pa, &ofs);
407 _kvm_err(kd, kd->program, "_kvm_vatop_pae: pdpe_pa not found");
412 if (lseek(kd->pmfd, ofs, 0) == -1) {
413 _kvm_syserr(kd, kd->program, "_kvm_vatop_pae: lseek");
416 if (read(kd->pmfd, &pte, sizeof pte) != sizeof pte) {
417 _kvm_syserr(kd, kd->program, "_kvm_vatop_pae: read");
421 _kvm_err(kd, kd->program, "_kvm_vatop_pae: pte not valid");
426 s =_kvm_pa2off(kd, a, pa);
428 _kvm_err(kd, kd->program,
435 _kvm_err(kd, 0, "invalid address (0x%lx)", va);
440 _kvm_kvatop(kvm_t *kd, u_long va, off_t *pa)
443 if (kd->vmst->minidump)
444 return (_kvm_minidump_kvatop(kd, va, pa));
445 if (ISALIVE(kd)) {
446 _kvm_err(kd, 0, "vatop called in live kernel!");
449 if (kd->vmst->pae)
450 return (_kvm_vatop_pae(kd, va, pa));
452 return (_kvm_vatop(kd, va, pa));