Lines Matching refs:kd
71 kvm_geterr(kvm_t *kd) in kvm_geterr() argument
74 if (kd == NULL) in kvm_geterr()
76 return (kd->errbuf); in kvm_geterr()
80 _kvm_read_kernel_ehdr(kvm_t *kd) in _kvm_read_kernel_ehdr() argument
85 _kvm_err(kd, kd->program, "Unsupported libelf"); in _kvm_read_kernel_ehdr()
88 elf = elf_begin(kd->nlfd, ELF_C_READ, NULL); in _kvm_read_kernel_ehdr()
90 _kvm_err(kd, kd->program, "%s", elf_errmsg(0)); in _kvm_read_kernel_ehdr()
94 _kvm_err(kd, kd->program, "kernel is not an ELF file"); in _kvm_read_kernel_ehdr()
97 if (gelf_getehdr(elf, &kd->nlehdr) == NULL) { in _kvm_read_kernel_ehdr()
98 _kvm_err(kd, kd->program, "%s", elf_errmsg(0)); in _kvm_read_kernel_ehdr()
104 switch (kd->nlehdr.e_ident[EI_DATA]) { in _kvm_read_kernel_ehdr()
109 _kvm_err(kd, kd->program, in _kvm_read_kernel_ehdr()
116 _kvm_open(kvm_t *kd, const char *uf, const char *mf, int flag, char *errout) in _kvm_open() argument
121 kd->vmfd = -1; in _kvm_open()
122 kd->pmfd = -1; in _kvm_open()
123 kd->nlfd = -1; in _kvm_open()
124 kd->vmst = NULL; in _kvm_open()
125 kd->procbase = NULL; in _kvm_open()
126 kd->argspc = NULL; in _kvm_open()
127 kd->argv = NULL; in _kvm_open()
132 _kvm_err(kd, kd->program, "exec file name too long"); in _kvm_open()
136 _kvm_err(kd, kd->program, "bad flags arg"); in _kvm_open()
142 if ((kd->pmfd = open(mf, flag | O_CLOEXEC, 0)) < 0) { in _kvm_open()
143 _kvm_syserr(kd, kd->program, "%s", mf); in _kvm_open()
146 if (fstat(kd->pmfd, &st) < 0) { in _kvm_open()
147 _kvm_syserr(kd, kd->program, "%s", mf); in _kvm_open()
152 _kvm_syserr(kd, kd->program, "empty file"); in _kvm_open()
163 kd->vmfd = open(_PATH_DEVNULL, O_RDONLY | O_CLOEXEC); in _kvm_open()
164 return (kd); in _kvm_open()
166 if ((kd->vmfd = open(_PATH_KMEM, flag | O_CLOEXEC)) < in _kvm_open()
168 _kvm_syserr(kd, kd->program, "%s", _PATH_KMEM); in _kvm_open()
171 return (kd); in _kvm_open()
180 if ((kd->nlfd = open(uf, O_RDONLY | O_CLOEXEC, 0)) < 0) { in _kvm_open()
181 _kvm_syserr(kd, kd->program, "%s", uf); in _kvm_open()
184 if (_kvm_read_kernel_ehdr(kd) < 0) in _kvm_open()
188 kd->rawdump = 1; in _kvm_open()
189 kd->writable = 1; in _kvm_open()
192 if ((*parch)->ka_probe(kd)) { in _kvm_open()
193 kd->arch = *parch; in _kvm_open()
197 if (kd->arch == NULL) { in _kvm_open()
198 _kvm_err(kd, kd->program, "unsupported architecture"); in _kvm_open()
205 if (!kd->arch->ka_native(kd) && kd->resolve_symbol == NULL) { in _kvm_open()
206 _kvm_err(kd, kd->program, in _kvm_open()
214 if (kd->arch->ka_initvtop(kd) < 0) in _kvm_open()
216 return (kd); in _kvm_open()
222 strlcpy(errout, kd->errbuf, _POSIX2_LINE_MAX); in _kvm_open()
223 (void)kvm_close(kd); in _kvm_open()
231 kvm_t *kd; in kvm_openfiles() local
233 if ((kd = calloc(1, sizeof(*kd))) == NULL) { in kvm_openfiles()
239 return (_kvm_open(kd, uf, mf, flag, errout)); in kvm_openfiles()
246 kvm_t *kd; in kvm_open() local
248 if ((kd = calloc(1, sizeof(*kd))) == NULL) { in kvm_open()
254 kd->program = errstr; in kvm_open()
255 return (_kvm_open(kd, uf, mf, flag, NULL)); in kvm_open()
262 kvm_t *kd; in kvm_open2() local
264 if ((kd = calloc(1, sizeof(*kd))) == NULL) { in kvm_open2()
270 kd->resolve_symbol = resolver; in kvm_open2()
271 return (_kvm_open(kd, uf, mf, flag, errout)); in kvm_open2()
275 kvm_close(kvm_t *kd) in kvm_close() argument
279 if (kd == NULL) { in kvm_close()
283 if (kd->vmst != NULL) in kvm_close()
284 kd->arch->ka_freevtop(kd); in kvm_close()
285 if (kd->pmfd >= 0) in kvm_close()
286 error |= close(kd->pmfd); in kvm_close()
287 if (kd->vmfd >= 0) in kvm_close()
288 error |= close(kd->vmfd); in kvm_close()
289 if (kd->nlfd >= 0) in kvm_close()
290 error |= close(kd->nlfd); in kvm_close()
291 if (kd->procbase != 0) in kvm_close()
292 free((void *)kd->procbase); in kvm_close()
293 if (kd->argbuf != 0) in kvm_close()
294 free((void *) kd->argbuf); in kvm_close()
295 if (kd->argspc != 0) in kvm_close()
296 free((void *) kd->argspc); in kvm_close()
297 if (kd->argv != 0) in kvm_close()
298 free((void *)kd->argv); in kvm_close()
299 if (kd->dpcpu_initialized != 0) in kvm_close()
300 free(kd->dpcpu_off); in kvm_close()
301 if (kd->pt_map != NULL) in kvm_close()
302 free(kd->pt_map); in kvm_close()
303 if (kd->page_map != NULL) in kvm_close()
304 free(kd->page_map); in kvm_close()
305 if (kd->sparse_map != MAP_FAILED && kd->sparse_map != NULL) in kvm_close()
306 munmap(kd->sparse_map, kd->pt_sparse_size); in kvm_close()
307 free((void *)kd); in kvm_close()
313 kvm_nlist2(kvm_t *kd, struct kvm_nlist *nl) in kvm_nlist2() argument
320 return (_kvm_nlist(kd, nl, 1)); in kvm_nlist2()
324 kvm_nlist(kvm_t *kd, struct nlist *nl) in kvm_nlist() argument
333 if (!kvm_native(kd)) { in kvm_nlist()
334 _kvm_err(kd, kd->program, "kvm_nlist of non-native vmcore"); in kvm_nlist()
345 _kvm_err(kd, kd->program, "cannot allocate memory"); in kvm_nlist()
350 nfail = kvm_nlist2(kd, kl); in kvm_nlist()
362 kvm_read(kvm_t *kd, u_long kva, void *buf, size_t len) in kvm_read() argument
365 return (kvm_read2(kd, kva, buf, len)); in kvm_read()
369 kvm_read2(kvm_t *kd, kvaddr_t kva, void *buf, size_t len) in kvm_read2() argument
376 if (ISALIVE(kd)) { in kvm_read2()
382 if (lseek(kd->vmfd, (off_t)kva, 0) == -1 && errno != 0) { in kvm_read2()
383 _kvm_err(kd, 0, "invalid address (0x%jx)", in kvm_read2()
387 cr = read(kd->vmfd, buf, len); in kvm_read2()
389 _kvm_syserr(kd, 0, "kvm_read"); in kvm_read2()
392 _kvm_err(kd, kd->program, "short read"); in kvm_read2()
398 cc = kd->arch->ka_kvatop(kd, kva, &pa); in kvm_read2()
404 if (lseek(kd->pmfd, pa, 0) == -1 && errno != 0) { in kvm_read2()
405 _kvm_syserr(kd, 0, _PATH_MEM); in kvm_read2()
408 cr = read(kd->pmfd, cp, cc); in kvm_read2()
410 _kvm_syserr(kd, kd->program, "kvm_read"); in kvm_read2()
429 kvm_write(kvm_t *kd, u_long kva, const void *buf, size_t len) in kvm_write() argument
436 if (!ISALIVE(kd) && !kd->writable) { in kvm_write()
437 _kvm_err(kd, kd->program, in kvm_write()
442 if (ISALIVE(kd)) { in kvm_write()
447 if (lseek(kd->vmfd, (off_t)kva, 0) == -1 && errno != 0) { in kvm_write()
448 _kvm_err(kd, 0, "invalid address (%lx)", kva); in kvm_write()
451 cc = write(kd->vmfd, buf, len); in kvm_write()
453 _kvm_syserr(kd, 0, "kvm_write"); in kvm_write()
456 _kvm_err(kd, kd->program, "short write"); in kvm_write()
462 cc = kd->arch->ka_kvatop(kd, kva, &pa); in kvm_write()
468 if (lseek(kd->pmfd, pa, 0) == -1 && errno != 0) { in kvm_write()
469 _kvm_syserr(kd, 0, _PATH_MEM); in kvm_write()
472 cw = write(kd->pmfd, cp, cc); in kvm_write()
474 _kvm_syserr(kd, kd->program, "kvm_write"); in kvm_write()
493 kvm_native(kvm_t *kd) in kvm_native() argument
496 if (ISALIVE(kd)) in kvm_native()
498 return (kd->arch->ka_native(kd)); in kvm_native()
502 kvm_walk_pages(kvm_t *kd, kvm_walk_pages_cb_t *cb, void *closure) in kvm_walk_pages() argument
505 if (kd->arch->ka_walk_pages == NULL) in kvm_walk_pages()
508 return (kd->arch->ka_walk_pages(kd, cb, closure)); in kvm_walk_pages()
512 kvm_kerndisp(kvm_t *kd) in kvm_kerndisp() argument
518 if (ISALIVE(kd)) { in kvm_kerndisp()
521 _kvm_syserr(kd, kd->program, in kvm_kerndisp()
527 _kvm_syserr(kd, kd->program, in kvm_kerndisp()
534 if (kd->arch->ka_kerndisp == NULL) in kvm_kerndisp()
537 return (kd->arch->ka_kerndisp(kd)); in kvm_kerndisp()