Lines Matching refs:kd

69 kvm_geterr(kvm_t *kd)  in kvm_geterr()  argument
72 if (kd == NULL) in kvm_geterr()
74 return (kd->errbuf); in kvm_geterr()
78 _kvm_read_kernel_ehdr(kvm_t *kd) in _kvm_read_kernel_ehdr() argument
83 _kvm_err(kd, kd->program, "Unsupported libelf"); in _kvm_read_kernel_ehdr()
86 elf = elf_begin(kd->nlfd, ELF_C_READ, NULL); in _kvm_read_kernel_ehdr()
88 _kvm_err(kd, kd->program, "%s", elf_errmsg(0)); in _kvm_read_kernel_ehdr()
92 _kvm_err(kd, kd->program, "kernel is not an ELF file"); in _kvm_read_kernel_ehdr()
95 if (gelf_getehdr(elf, &kd->nlehdr) == NULL) { in _kvm_read_kernel_ehdr()
96 _kvm_err(kd, kd->program, "%s", elf_errmsg(0)); in _kvm_read_kernel_ehdr()
102 switch (kd->nlehdr.e_ident[EI_DATA]) { in _kvm_read_kernel_ehdr()
107 _kvm_err(kd, kd->program, in _kvm_read_kernel_ehdr()
114 _kvm_open(kvm_t *kd, const char *uf, const char *mf, int flag, char *errout) in _kvm_open() argument
119 kd->vmfd = -1; in _kvm_open()
120 kd->pmfd = -1; in _kvm_open()
121 kd->nlfd = -1; in _kvm_open()
122 kd->vmst = NULL; in _kvm_open()
123 kd->procbase = NULL; in _kvm_open()
124 kd->argspc = NULL; in _kvm_open()
125 kd->argv = NULL; in _kvm_open()
130 _kvm_err(kd, kd->program, "exec file name too long"); in _kvm_open()
134 _kvm_err(kd, kd->program, "bad flags arg"); in _kvm_open()
140 if ((kd->pmfd = open(mf, flag | O_CLOEXEC, 0)) < 0) { in _kvm_open()
141 _kvm_syserr(kd, kd->program, "%s", mf); in _kvm_open()
144 if (fstat(kd->pmfd, &st) < 0) { in _kvm_open()
145 _kvm_syserr(kd, kd->program, "%s", mf); in _kvm_open()
150 _kvm_syserr(kd, kd->program, "empty file"); in _kvm_open()
161 kd->vmfd = open(_PATH_DEVNULL, O_RDONLY | O_CLOEXEC); in _kvm_open()
162 return (kd); in _kvm_open()
164 if ((kd->vmfd = open(_PATH_KMEM, flag | O_CLOEXEC)) < in _kvm_open()
166 _kvm_syserr(kd, kd->program, "%s", _PATH_KMEM); in _kvm_open()
169 return (kd); in _kvm_open()
178 if ((kd->nlfd = open(uf, O_RDONLY | O_CLOEXEC, 0)) < 0) { in _kvm_open()
179 _kvm_syserr(kd, kd->program, "%s", uf); in _kvm_open()
182 if (_kvm_read_kernel_ehdr(kd) < 0) in _kvm_open()
186 kd->rawdump = 1; in _kvm_open()
187 kd->writable = 1; in _kvm_open()
190 if ((*parch)->ka_probe(kd)) { in _kvm_open()
191 kd->arch = *parch; in _kvm_open()
195 if (kd->arch == NULL) { in _kvm_open()
196 _kvm_err(kd, kd->program, "unsupported architecture"); in _kvm_open()
203 if (!kd->arch->ka_native(kd) && kd->resolve_symbol == NULL) { in _kvm_open()
204 _kvm_err(kd, kd->program, in _kvm_open()
212 if (kd->arch->ka_initvtop(kd) < 0) in _kvm_open()
214 return (kd); in _kvm_open()
220 strlcpy(errout, kd->errbuf, _POSIX2_LINE_MAX); in _kvm_open()
221 (void)kvm_close(kd); in _kvm_open()
229 kvm_t *kd; in kvm_openfiles() local
231 if ((kd = calloc(1, sizeof(*kd))) == NULL) { in kvm_openfiles()
237 return (_kvm_open(kd, uf, mf, flag, errout)); in kvm_openfiles()
244 kvm_t *kd; in kvm_open() local
246 if ((kd = calloc(1, sizeof(*kd))) == NULL) { in kvm_open()
252 kd->program = errstr; in kvm_open()
253 return (_kvm_open(kd, uf, mf, flag, NULL)); in kvm_open()
260 kvm_t *kd; in kvm_open2() local
262 if ((kd = calloc(1, sizeof(*kd))) == NULL) { in kvm_open2()
268 kd->resolve_symbol = resolver; in kvm_open2()
269 return (_kvm_open(kd, uf, mf, flag, errout)); in kvm_open2()
273 kvm_close(kvm_t *kd) in kvm_close() argument
277 if (kd == NULL) { in kvm_close()
281 if (kd->vmst != NULL) in kvm_close()
282 kd->arch->ka_freevtop(kd); in kvm_close()
283 if (kd->pmfd >= 0) in kvm_close()
284 error |= close(kd->pmfd); in kvm_close()
285 if (kd->vmfd >= 0) in kvm_close()
286 error |= close(kd->vmfd); in kvm_close()
287 if (kd->nlfd >= 0) in kvm_close()
288 error |= close(kd->nlfd); in kvm_close()
289 if (kd->procbase != 0) in kvm_close()
290 free((void *)kd->procbase); in kvm_close()
291 if (kd->argbuf != 0) in kvm_close()
292 free((void *) kd->argbuf); in kvm_close()
293 if (kd->argspc != 0) in kvm_close()
294 free((void *) kd->argspc); in kvm_close()
295 if (kd->argv != 0) in kvm_close()
296 free((void *)kd->argv); in kvm_close()
297 if (kd->dpcpu_initialized != 0) in kvm_close()
298 free(kd->dpcpu_off); in kvm_close()
299 if (kd->pt_map != NULL) in kvm_close()
300 free(kd->pt_map); in kvm_close()
301 if (kd->page_map != NULL) in kvm_close()
302 free(kd->page_map); in kvm_close()
303 if (kd->sparse_map != MAP_FAILED && kd->sparse_map != NULL) in kvm_close()
304 munmap(kd->sparse_map, kd->pt_sparse_size); in kvm_close()
305 free((void *)kd); in kvm_close()
311 kvm_nlist2(kvm_t *kd, struct kvm_nlist *nl) in kvm_nlist2() argument
318 return (_kvm_nlist(kd, nl, 1)); in kvm_nlist2()
322 kvm_nlist(kvm_t *kd, struct nlist *nl) in kvm_nlist() argument
331 if (!kvm_native(kd)) { in kvm_nlist()
332 _kvm_err(kd, kd->program, "kvm_nlist of non-native vmcore"); in kvm_nlist()
343 _kvm_err(kd, kd->program, "cannot allocate memory"); in kvm_nlist()
348 nfail = kvm_nlist2(kd, kl); in kvm_nlist()
360 kvm_read(kvm_t *kd, u_long kva, void *buf, size_t len) in kvm_read() argument
363 return (kvm_read2(kd, kva, buf, len)); in kvm_read()
367 kvm_read2(kvm_t *kd, kvaddr_t kva, void *buf, size_t len) in kvm_read2() argument
374 if (ISALIVE(kd)) { in kvm_read2()
380 if (lseek(kd->vmfd, (off_t)kva, 0) == -1 && errno != 0) { in kvm_read2()
381 _kvm_err(kd, 0, "invalid address (0x%jx)", in kvm_read2()
385 cr = read(kd->vmfd, buf, len); in kvm_read2()
387 _kvm_syserr(kd, 0, "kvm_read"); in kvm_read2()
390 _kvm_err(kd, kd->program, "short read"); in kvm_read2()
396 cc = kd->arch->ka_kvatop(kd, kva, &pa); in kvm_read2()
402 if (lseek(kd->pmfd, pa, 0) == -1 && errno != 0) { in kvm_read2()
403 _kvm_syserr(kd, 0, _PATH_MEM); in kvm_read2()
406 cr = read(kd->pmfd, cp, cc); in kvm_read2()
408 _kvm_syserr(kd, kd->program, "kvm_read"); in kvm_read2()
427 kvm_write(kvm_t *kd, u_long kva, const void *buf, size_t len) in kvm_write() argument
434 if (!ISALIVE(kd) && !kd->writable) { in kvm_write()
435 _kvm_err(kd, kd->program, in kvm_write()
440 if (ISALIVE(kd)) { in kvm_write()
445 if (lseek(kd->vmfd, (off_t)kva, 0) == -1 && errno != 0) { in kvm_write()
446 _kvm_err(kd, 0, "invalid address (%lx)", kva); in kvm_write()
449 cc = write(kd->vmfd, buf, len); in kvm_write()
451 _kvm_syserr(kd, 0, "kvm_write"); in kvm_write()
454 _kvm_err(kd, kd->program, "short write"); in kvm_write()
460 cc = kd->arch->ka_kvatop(kd, kva, &pa); in kvm_write()
466 if (lseek(kd->pmfd, pa, 0) == -1 && errno != 0) { in kvm_write()
467 _kvm_syserr(kd, 0, _PATH_MEM); in kvm_write()
470 cw = write(kd->pmfd, cp, cc); in kvm_write()
472 _kvm_syserr(kd, kd->program, "kvm_write"); in kvm_write()
491 kvm_native(kvm_t *kd) in kvm_native() argument
494 if (ISALIVE(kd)) in kvm_native()
496 return (kd->arch->ka_native(kd)); in kvm_native()
500 kvm_walk_pages(kvm_t *kd, kvm_walk_pages_cb_t *cb, void *closure) in kvm_walk_pages() argument
503 if (kd->arch->ka_walk_pages == NULL) in kvm_walk_pages()
506 return (kd->arch->ka_walk_pages(kd, cb, closure)); in kvm_walk_pages()
510 kvm_kerndisp(kvm_t *kd) in kvm_kerndisp() argument
516 if (ISALIVE(kd)) { in kvm_kerndisp()
519 _kvm_syserr(kd, kd->program, in kvm_kerndisp()
525 _kvm_syserr(kd, kd->program, in kvm_kerndisp()
532 if (kd->arch->ka_kerndisp == NULL) in kvm_kerndisp()
535 return (kd->arch->ka_kerndisp(kd)); in kvm_kerndisp()