Lines Matching refs:kcore

1235 struct kcore {  struct
1242 static int kcore__open(struct kcore *kcore, const char *filename) in kcore__open() argument
1246 kcore->fd = open(filename, O_RDONLY); in kcore__open()
1247 if (kcore->fd == -1) in kcore__open()
1250 kcore->elf = elf_begin(kcore->fd, ELF_C_READ, NULL); in kcore__open()
1251 if (!kcore->elf) in kcore__open()
1254 kcore->elfclass = gelf_getclass(kcore->elf); in kcore__open()
1255 if (kcore->elfclass == ELFCLASSNONE) in kcore__open()
1258 ehdr = gelf_getehdr(kcore->elf, &kcore->ehdr); in kcore__open()
1265 elf_end(kcore->elf); in kcore__open()
1267 close(kcore->fd); in kcore__open()
1271 static int kcore__init(struct kcore *kcore, char *filename, int elfclass, in kcore__init() argument
1274 kcore->elfclass = elfclass; in kcore__init()
1277 kcore->fd = mkstemp(filename); in kcore__init()
1279 kcore->fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0400); in kcore__init()
1280 if (kcore->fd == -1) in kcore__init()
1283 kcore->elf = elf_begin(kcore->fd, ELF_C_WRITE, NULL); in kcore__init()
1284 if (!kcore->elf) in kcore__init()
1287 if (!gelf_newehdr(kcore->elf, elfclass)) in kcore__init()
1290 memset(&kcore->ehdr, 0, sizeof(GElf_Ehdr)); in kcore__init()
1295 elf_end(kcore->elf); in kcore__init()
1297 close(kcore->fd); in kcore__init()
1302 static void kcore__close(struct kcore *kcore) in kcore__close() argument
1304 elf_end(kcore->elf); in kcore__close()
1305 close(kcore->fd); in kcore__close()
1308 static int kcore__copy_hdr(struct kcore *from, struct kcore *to, size_t count) in kcore__copy_hdr()
1344 static int kcore__add_phdr(struct kcore *kcore, int idx, off_t offset, in kcore__add_phdr() argument
1358 if (!gelf_update_phdr(kcore->elf, idx, &phdr)) in kcore__add_phdr()
1364 static off_t kcore__write(struct kcore *kcore) in kcore__write() argument
1366 return elf_update(kcore->elf, ELF_C_WRITE); in kcore__write()
1654 struct kcore kcore; in kcore_copy() local
1655 struct kcore extract; in kcore_copy()
1672 if (kcore__open(&kcore, kcore_filename)) in kcore_copy()
1675 if (kcore_copy__calc_maps(&kci, from_dir, kcore.elf)) in kcore_copy()
1678 if (kcore__init(&extract, extract_filename, kcore.elfclass, false)) in kcore_copy()
1684 if (kcore__copy_hdr(&kcore, &extract, count)) in kcore_copy()
1702 if (copy_bytes(kcore.fd, kci.kernel_map.offset, extract.fd, offset, in kcore_copy()
1706 if (modules_offset && copy_bytes(kcore.fd, kci.modules_map.offset, in kcore_copy()
1724 kcore__close(&kcore); in kcore_copy()
1737 struct kcore kcore; in kcore_extract__create() local
1738 struct kcore extract; in kcore_extract__create()
1743 if (kcore__open(&kcore, kce->kcore_filename)) in kcore_extract__create()
1747 if (kcore__init(&extract, kce->extract_filename, kcore.elfclass, true)) in kcore_extract__create()
1750 if (kcore__copy_hdr(&kcore, &extract, count)) in kcore_extract__create()
1760 if (copy_bytes(kcore.fd, kce->offs, extract.fd, offset, kce->len)) in kcore_extract__create()
1770 kcore__close(&kcore); in kcore_extract__create()