Lines Matching defs:core

47 #include "core.h"
59 static bool core_offset(struct procstat_core *core, off_t offset);
60 static bool core_read(struct procstat_core *core, void *buf, size_t len);
61 static ssize_t core_read_mem(struct procstat_core *core, void *buf,
63 static void *get_args(struct procstat_core *core, vm_offset_t psstrings,
69 struct procstat_core *core;
118 core = malloc(sizeof(struct procstat_core));
119 if (core == NULL) {
123 core->pc_magic = PROCSTAT_CORE_MAGIC;
124 core->pc_fd = fd;
125 core->pc_elf = e;
126 core->pc_ehdr = ehdr;
127 core->pc_phdr = phdr;
129 return (core);
139 procstat_core_close(struct procstat_core *core)
142 assert(core->pc_magic == PROCSTAT_CORE_MAGIC);
144 elf_end(core->pc_elf);
145 close(core->pc_fd);
146 free(core);
150 procstat_core_get(struct procstat_core *core, enum psc_type type, void *buf,
162 assert(core->pc_magic == PROCSTAT_CORE_MAGIC);
204 warnx("unknown core stat type: %d", type);
208 offset = core->pc_phdr.p_offset;
209 eoffset = offset + core->pc_phdr.p_filesz;
212 if (!core_offset(core, offset))
214 if (!core_read(core, &nhdr, sizeof(nhdr)))
227 if (!core_read(core, nbuf, sizeof(nbuf)))
232 warnx("corrupted core file");
235 if (!core_read(core, &cstructsize, sizeof(cstructsize)))
254 if (!core_read(core, buf, len)) {
269 buf = get_args(core, psstrings, type, buf, &len);
279 core_offset(struct procstat_core *core, off_t offset)
282 assert(core->pc_magic == PROCSTAT_CORE_MAGIC);
284 if (lseek(core->pc_fd, offset, SEEK_SET) == -1) {
285 warn("core: lseek(%jd)", (intmax_t)offset);
292 core_read(struct procstat_core *core, void *buf, size_t len)
296 assert(core->pc_magic == PROCSTAT_CORE_MAGIC);
298 n = read(core->pc_fd, buf, len);
300 warn("core: read");
304 warnx("core: short read");
311 core_read_mem(struct procstat_core *core, void *buf, size_t len,
318 assert(core->pc_magic == PROCSTAT_CORE_MAGIC);
320 for (i = 0; i < core->pc_ehdr.e_phnum; i++) {
321 if (gelf_getphdr(core->pc_elf, i, &phdr) != &phdr) {
338 if (!core_offset(core, offset))
340 if (!core_read(core, buf, len))
351 get_args(struct procstat_core *core, vm_offset_t psstrings, enum psc_type type,
364 if (core_read_mem(core, &pss, sizeof(pss), psstrings, true) == -1)
387 if (core_read_mem(core, argv, size, addr, true) == -1)
414 n = core_read_mem(core, p, chunksz, addr, false);