Lines Matching refs:core
118 static bool core_offset(struct procstat_core *core, off_t offset);
119 static bool core_read(struct procstat_core *core, void *buf, size_t len);
120 static ssize_t core_read_mem(struct procstat_core *core, void *buf,
122 static void *get_args(struct procstat_core *core, vm_offset_t psstrings,
128 struct procstat_core *core; in procstat_core_open() local
177 core = malloc(sizeof(struct procstat_core)); in procstat_core_open()
178 if (core == NULL) { in procstat_core_open()
182 core->pc_magic = PROCSTAT_CORE_MAGIC; in procstat_core_open()
183 core->pc_fd = fd; in procstat_core_open()
184 core->pc_elf = e; in procstat_core_open()
185 core->pc_ehdr = ehdr; in procstat_core_open()
186 core->pc_phdr = phdr; in procstat_core_open()
188 return (core); in procstat_core_open()
198 procstat_core_close(struct procstat_core *core) in procstat_core_close() argument
201 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in procstat_core_close()
203 elf_end(core->pc_elf); in procstat_core_close()
204 close(core->pc_fd); in procstat_core_close()
205 free(core); in procstat_core_close()
209 procstat_core_get(struct procstat_core *core, enum psc_type type, void *buf, in procstat_core_get() argument
220 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in procstat_core_get()
227 offset = core->pc_phdr.p_offset; in procstat_core_get()
228 eoffset = offset + core->pc_phdr.p_filesz; in procstat_core_get()
232 if (!core_offset(core, offset)) in procstat_core_get()
234 if (!core_read(core, &nhdr, sizeof(nhdr))) in procstat_core_get()
247 if (!core_read(core, nbuf, sizeof(nbuf))) in procstat_core_get()
255 if (!core_read(core, &cstructsize, sizeof(cstructsize))) in procstat_core_get()
274 if (!core_read(core, (char *)buf + curlen, len)) { in procstat_core_get()
289 buf = get_args(core, psstrings, type, buf, &len); in procstat_core_get()
308 core_offset(struct procstat_core *core, off_t offset) in core_offset() argument
311 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in core_offset()
313 if (lseek(core->pc_fd, offset, SEEK_SET) == -1) { in core_offset()
321 core_read(struct procstat_core *core, void *buf, size_t len) in core_read() argument
325 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in core_read()
327 n = read(core->pc_fd, buf, len); in core_read()
340 core_read_mem(struct procstat_core *core, void *buf, size_t len, in core_read_mem() argument
347 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in core_read_mem()
349 for (i = 0; i < core->pc_ehdr.e_phnum; i++) { in core_read_mem()
350 if (gelf_getphdr(core->pc_elf, i, &phdr) != &phdr) { in core_read_mem()
367 if (!core_offset(core, offset)) in core_read_mem()
369 if (!core_read(core, buf, len)) in core_read_mem()
380 get_args(struct procstat_core *core, vm_offset_t psstrings, enum psc_type type, in get_args() argument
393 if (core_read_mem(core, &pss, sizeof(pss), psstrings, true) == -1) in get_args()
416 if (core_read_mem(core, argv, size, addr, true) == -1) in get_args()
443 n = core_read_mem(core, p, chunksz, addr, false); in get_args()
465 procstat_core_note_count(struct procstat_core *core, enum psc_type type) in procstat_core_note_count() argument
478 offset = core->pc_phdr.p_offset; in procstat_core_note_count()
479 eoffset = offset + core->pc_phdr.p_filesz; in procstat_core_note_count()
482 if (!core_offset(core, offset)) in procstat_core_note_count()
484 if (!core_read(core, &nhdr, sizeof(nhdr))) in procstat_core_note_count()
497 if (!core_read(core, nbuf, sizeof(nbuf))) in procstat_core_note_count()
505 if (!core_read(core, &cstructsize, sizeof(cstructsize))) in procstat_core_note_count()