Lines Matching refs:core
79 static bool core_offset(struct procstat_core *core, off_t offset);
80 static bool core_read(struct procstat_core *core, void *buf, size_t len);
81 static ssize_t core_read_mem(struct procstat_core *core, void *buf,
83 static void *get_args(struct procstat_core *core, vm_offset_t psstrings,
89 struct procstat_core *core; in procstat_core_open() local
138 core = malloc(sizeof(struct procstat_core)); in procstat_core_open()
139 if (core == NULL) { in procstat_core_open()
143 core->pc_magic = PROCSTAT_CORE_MAGIC; in procstat_core_open()
144 core->pc_fd = fd; in procstat_core_open()
145 core->pc_elf = e; in procstat_core_open()
146 core->pc_ehdr = ehdr; in procstat_core_open()
147 core->pc_phdr = phdr; in procstat_core_open()
149 return (core); in procstat_core_open()
159 procstat_core_close(struct procstat_core *core) in procstat_core_close() argument
162 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in procstat_core_close()
164 elf_end(core->pc_elf); in procstat_core_close()
165 close(core->pc_fd); in procstat_core_close()
166 free(core); in procstat_core_close()
170 procstat_core_get(struct procstat_core *core, enum psc_type type, void *buf, in procstat_core_get() argument
181 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in procstat_core_get()
188 offset = core->pc_phdr.p_offset; in procstat_core_get()
189 eoffset = offset + core->pc_phdr.p_filesz; in procstat_core_get()
193 if (!core_offset(core, offset)) in procstat_core_get()
195 if (!core_read(core, &nhdr, sizeof(nhdr))) in procstat_core_get()
208 if (!core_read(core, nbuf, sizeof(nbuf))) in procstat_core_get()
216 if (!core_read(core, &cstructsize, sizeof(cstructsize))) in procstat_core_get()
235 if (!core_read(core, (char *)buf + curlen, len)) { in procstat_core_get()
250 buf = get_args(core, psstrings, type, buf, &len); in procstat_core_get()
269 core_offset(struct procstat_core *core, off_t offset) in core_offset() argument
272 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in core_offset()
274 if (lseek(core->pc_fd, offset, SEEK_SET) == -1) { in core_offset()
282 core_read(struct procstat_core *core, void *buf, size_t len) in core_read() argument
286 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in core_read()
288 n = read(core->pc_fd, buf, len); in core_read()
301 core_read_mem(struct procstat_core *core, void *buf, size_t len, in core_read_mem() argument
308 assert(core->pc_magic == PROCSTAT_CORE_MAGIC); in core_read_mem()
310 for (i = 0; i < core->pc_ehdr.e_phnum; i++) { in core_read_mem()
311 if (gelf_getphdr(core->pc_elf, i, &phdr) != &phdr) { in core_read_mem()
328 if (!core_offset(core, offset)) in core_read_mem()
330 if (!core_read(core, buf, len)) in core_read_mem()
341 get_args(struct procstat_core *core, vm_offset_t psstrings, enum psc_type type, in get_args() argument
354 if (core_read_mem(core, &pss, sizeof(pss), psstrings, true) == -1) in get_args()
377 if (core_read_mem(core, argv, size, addr, true) == -1) in get_args()
404 n = core_read_mem(core, p, chunksz, addr, false); in get_args()
426 procstat_core_note_count(struct procstat_core *core, enum psc_type type) in procstat_core_note_count() argument
439 offset = core->pc_phdr.p_offset; in procstat_core_note_count()
440 eoffset = offset + core->pc_phdr.p_filesz; in procstat_core_note_count()
443 if (!core_offset(core, offset)) in procstat_core_note_count()
445 if (!core_read(core, &nhdr, sizeof(nhdr))) in procstat_core_note_count()
458 if (!core_read(core, nbuf, sizeof(nbuf))) in procstat_core_note_count()
466 if (!core_read(core, &cstructsize, sizeof(cstructsize))) in procstat_core_note_count()